简单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所示。
图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所示。
图1 运行结果
客户端程序说明
文件1中,创建了一个客户端程序,用于向指定服务端发送连接并进行数据交互。
在客户端创建Socket对象与服务器端建立连接后,会打印出“服务器端向客户端做出响应”,如图1所示。
同时,文件1中的服务端程序结束了阻塞状态。
它会打印出“与客户端连接成功,开始进行数据交互!”,如图2所示。
图2 运行结果
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。
相关文章
更多-
- 迅捷路由器怎么调信号最强,设置时要注意什么?
- 时间:2026-08-27
-
- vivo浏览器怎么卸不掉?原因和解决方法在这里
- 时间:2026-08-27
-
- OPPO R11s黑屏了,怎么强制恢复出厂设置?
- 时间:2026-08-27
-
- 飞利浦显示器包装盒有生产日期和保修期吗?怎么看?
- 时间:2026-08-27
-
- 联想新平板开机必须联网吗?怎么做?
- 时间:2026-08-27
-
- 平板横竖屏切换设置与问题解决
- 时间:2026-08-27
-
- 移动电源容量怎么测?要准备哪些工具?
- 时间:2026-08-27
-
- 荣耀90 Pro防水吗?防水级别多少?怎么用才安全
- 时间:2026-08-27
精选合集
更多大家都在玩
大家都在看
更多-
- 糖尿病完全不能吃糖吗
- 时间:2026-09-15
-
- 蚂蚁庄园小课堂2026年9月16日最新题目答案
- 时间:2026-09-15
-
- 小鸡答题今天的答案是什么2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园每日答题答案2026年9月16日
- 时间:2026-09-15
-
- 以下哪种粮食是酿造绍兴黄酒的主要原料 蚂蚁庄园今日答案9月16日
- 时间:2026-09-15
-
- 劝学名句“及时当勉励,岁月不待人”出自哪位诗人 蚂蚁庄园今日答案9.16
- 时间:2026-09-15
-
- 蚂蚁庄园今天答题答案2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园答题今日答案2026年9月16日
- 时间:2026-09-15


