通过setsockopt :SO_LINGER 选项可以指定函数close对面向连接的协议如何操作。
内核缺省close操作是立即返回,如果有数据残留在套接口缓冲区中则系统将试着将这些数据发送给对方。
但是如果close时,接收缓冲区有未接收数据,则操作系统会直接发送RST报文结束链接,也就是说TCP链接不会优雅关闭。
所以,如果希望链接被优雅关闭,应在接受完缓冲区内的所有数据后再调用close。
通过setsockopt :SO_LINGER 选项可以指定函数close对面向连接的协议如何操作。
内核缺省close操作是立即返回,如果有数据残留在套接口缓冲区中则系统将试着将这些数据发送给对方。
但是如果close时,接收缓冲区有未接收数据,则操作系统会直接发送RST报文结束链接,也就是说TCP链接不会优雅关闭。
所以,如果希望链接被优雅关闭,应在接受完缓冲区内的所有数据后再调用close。