io

java BIO通信模型详解

2017-07-03  本文已影响22人  每天学点编程

客户端/服务器模型

Client/Server模型是网络编程的基本模型,服务端提供位置信息(绑定的IP地址和监听端口),客户端通过连接操作向服务端监听的地址发起连接请求,通过三次握手建立连接,如果连接建立成功,双方就可以通过网络套接字(Socket)进行通信。

BIO通信模型图——请求/应答通信模型

该模型缺乏弹性伸缩能力,服务端线程个数与客户端并发访问数呈1:1的正比关系,随着线程数的不断膨胀,系统性能将急剧下降,最终会导致线程堆栈溢出、创建新线程失败等——进程宕机或者僵死,不能对外提供服务。

代码

服务端



客户端



上面的代码是服务器被动响应客户端。

交互式服务端:


交互式客户端:


运行结果:
客户端


服务端

问题

BIO的问题在于每当有一个新请求接入时,服务端必须创建一个新的线程处理新接入的链路,一个线程只能处理一个客户端连接(如果要做成像QQ那样的话,还需要两个线程)。在高性能服务器应用领域,往往需要面向成千上万个客户端的并发连接,这种模型显然无法满足高性能、高并发接入的场景。

上一篇 下一篇

猜你喜欢

热点阅读