6.1.4 Socket通信流程

6.1.4 Socket通信流程

Socket是“打开—读/写—关闭”模式的实现,以使用TCP协议通信的Socket为例,其交互流程大概是这样子的,如图6.6所示。

图6.6 Socket的tcp交互流程

服务器根据地址类型(ipv4,ipv6)、Socket类型、协议创建Socket。

服务器为Socket绑定ip地址和端口号。

服务器Socket监听端口号请求,随时准备接收客户端发来的连接,这时候服务器的Socket并没有被打开。

客户端创建Socket:

(1)客户端打开Socket,根据服务器ip地址和端口号试图连接服务器Socket。

(2)服务器Socket接收到客户端Socket请求,被动打开,开始接收客户端请求,直到客户端返回连接信息。这时候Socket进入阻塞状态,所谓阻塞即accept()方法一直到客户端返回连接信息后才返回,开始接收下一个客户端谅解请求。

(3)客户端连接成功,向服务器发送连接状态信息。

(4)服务器accept方法返回,连接成功。

(5)客户端向Socket写入信息。

(6)服务器读取信息。

(7)客户端关闭。

(8)服务器端关闭。