Socket - Xinrea/Learn GitHub Wiki
Socket中的TCP三次握手 - 建立连接
client[connect()阻塞]---------SYN J---------->server[accept()阻塞]
|
client[connect()返回]<----ACK J+1, SYN K------server[accept()阻塞]
|
client[connect()返回]--------ACK K+1--------->server[accept()返回]
如上所示,三次握手中,第二次握手时客户端connect()返回;第三次握手时服务端accept()返回。
Socket中的TCP四次握手 - 释放连接
client[close()]---------FIN J---------->server
|
client<-----------------ACK J+1---------server
另一边关闭连接同上
shutdown()和close()
close()不会唤醒堵塞的recv()和accept(),因此不会立即关闭Socket,而是等待recv()和accept()的完成
shutdown()会唤醒休眠中的recv()和accept(),使其结束,立即关闭Socket。