理论教育 Java程序设计:TCP网络编程的多线程实现

Java程序设计:TCP网络编程的多线程实现

时间:2023-10-18 理论教育 版权反馈
【摘要】:在13.4.1小节中实现了一个简单的TCP通信服务器端程序和客户端程序,能够满足一个客户端向服务器发起请求并进行通信。然而,在实际应用中,很多服务器端程序都是允许被多个客户端程序访问的,例如门户网站等。这时就需要进行多线程的TCP网络编程,将服务器端编写为多线程的模式。图13.24表示多个用户访问同一个服务器。修改13.4.1小节中服务器端应用程序代码,关键代码如下:上述代码使用多线程的方式创建了一个服务端程序。

Java程序设计:TCP网络编程的多线程实现

在13.4.1小节中实现了一个简单的TCP通信服务器端程序和客户端程序,能够满足一个客户端向服务器发起请求并进行通信。当一个客户端程序向服务器端发起请求之后,服务器端就会结束阻塞状态,完成程序的运行。然而,在实际应用中,很多服务器端程序都是允许被多个客户端程序访问的,例如门户网站等。这时就需要进行多线程的TCP网络编程,将服务器端编写为多线程的模式。

图13.24表示多个用户访问同一个服务器。

图13.24 多个用户访问同一个服务器示意图

从图13.24可以看出,服务器端为每个客户端都创建了一个对应的Socket,然后与客户端进行通信。因此,可以在服务器端使用多线程为多个客户端提供服务。修改13.4.1小节中服务器端应用程序代码,关键代码如下:

(www.daowen.com)

上述代码使用多线程的方式创建了一个服务端程序。通过在while()循环中调用accept()方法,不停地接收客户端发起的请求,当有客户端向服务器发起连接请求后,服务器端就会开启一个新的线程来处理这个客户端发送的数据,并与这个客户端进行通信。此时,主线程仍在不停地执行while()中的代码,调用accept()方法让其处于继续等待状态。

程序编写完毕之后,先运行服务器端程序,然后运行客户端程序,当多个客户端程序向服务器发起请求后,服务器端程序的输出结果如图13.25所示。

图13.25 服务器端程序运行结果

说明:

从图13.25中可以看出,服务器结束与客户端交互数据的顺序是不确定的,当服务器在为第3个客户端提供服务的时候,与第2个客户端的交互还没有结束,也就是说,服务器端并不是为一个客户端服务完毕之后才为其他客户服务,而是同时为多个客户端进行服务。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈