面试题:非阻塞tcp socket调用close时缓冲区未发送数据的处理逻辑

来源:互联网 发布:许知远 陈嘉映 知乎 编辑:程序博客网 时间:2024/05/01 06:45
这个问题主要考虑两方面,close是否会阻塞调用?write写入的数据能否正确发送到对端?
经过实现验证:
close之前已设置过非阻塞,所以会立即返回,如果tcp缓冲区还有数据需要发送,数据能够正确的发送到对端。
但有一点要注意:在发送的最后一个包会加FIN标志;如果另一端也要关闭发FIN时,本端就会发RST,因为本端的SOCKET已经关了。

原创粉丝点击