位置:首页 > Java > 简单TCP网络程序开发入门与实现技巧

简单TCP网络程序开发入门与实现技巧

时间:2026-08-15  |  作者:风起客  |  阅读:0

通过前面两个小节的讲解,已经了解了ServerSocket、Socket类的基本用法。

为了让初学者更好地掌握这两个类,接下来通过一个TCP通信的案例,进一步学习这两个类的基本使用。

TCP通信案例

要实现TCP通信,需要创建一个服务器端程序和一个客户端程序。

为了保证数据传输的安全性,首先需要实现服务器端程序,如文件1所示。

文件1 TCPServer.ja va

 1    import ja va.io.*;
 2    import ja va.net.*;
 3    // TCP服务端
 4    public class TCPServer {
 5        public static void main(String[] args) throws Exception {
 6            // 创建指定端口号为7788的服务端ServerSocket对象
 7            ServerSocket serverSocket = new ServerSocket(7788); 
 8            while (true){
 9                // 调用ServerSocket的accept()方法开始接收数据
 10                Socket client= serverSocket.accept(); 
 11                System.out.println("与客户端连接成功,开始进行数据交互!");
 12                // 获取客户端的输出流对象
 13                OutputStream os = client.getOutputStream();
 14                // 当客户端连接到服务端时,向客户端输出数据
 15                os.write(("服务器端向客户端做出响应!").getBytes()); 
 16                // 模拟与客户端交互耗时
 17                Thread.sleep(5000);
 18                // 关闭流和Socket连接
 19                os.close();
 20                client.close();
 21            }
 22        }
 23    }

运行结果如图1所示。

简单TCP网络程序开发入门与实现技巧_wishdown.com

图1 运行结果

服务器端程序说明

在文件1里,先搭建了一个服务器端程序,专门用来接收客户端发来的数据。

创建ServerSocket对象时,把服务端端口明确设为7788。

随后在while循环中反复调用它的accept()方法,持续监听客户端连接请求。

这里有个关键点:accept()方法执行时,程序会进入阻塞状态。

只有当客户端真正发起访问,这种阻塞才会解除。

同时,方法会返回一个Socket类型的对象,用来表示当前连接的客户端。

借助这个对象,可以拿到与客户端关联的输出流,并向客户端发送信息。

另外,代码里通过执行Thread.sleep(5000)语句,模拟了服务器端与客户端交互时实际会占用的一段时间。

等通信完成之后,最后再调用Socket对象的close()方法结束本次通信。

客户端程序实现

完成了服务器端程序的编写,接下来编写客户端程序,如文件1所示。

文件1 TCPClient.ja va

 1    import ja va.io.*;
 2    import ja va.net.*;
 3    // TCP客户端
 4    public class TCPClient {
 5        public static void main(String[] args) throws Exception {
 6            // 创建一个Socket并连接到指定的服务器端
 7            Socket client = new Socket(InetAddress.getLocalHost(),7788);
 8            // 获取服务端返回的输入流数据并打印
 9            InputStream is = client.getInputStream(); 
 10            byte[] buf = new byte[1024]; 
 11            int len = is.read(buf);
 12            while (len != -1){
 13                System.out.println(new String(buf, 0, len)); 
 14                len = is.read(buf);
 15            }
 16            // 关闭流和Socket连接
 17            is.close();
 18            client.close(); // 关闭Socket对象,释放资源
 19        }
 20    }

运行结果如图1所示。

简单TCP网络程序开发入门与实现技巧_wishdown.com

图1 运行结果

客户端程序说明

文件1中,创建了一个客户端程序,用于向指定服务端发送连接并进行数据交互。

在客户端创建Socket对象与服务器端建立连接后,会打印出“服务器端向客户端做出响应”,如图1所示。

同时,文件1中的服务端程序结束了阻塞状态。

它会打印出“与客户端连接成功,开始进行数据交互!”,如图2所示。

简单TCP网络程序开发入门与实现技巧_wishdown.com

图2 运行结果

免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多