我尝试了以下步骤:
此处在步骤5中发生错误,其中errno = ENOTCONN。当我尝试关机时,同样的错误在我看完EOF后写了。这是预期的吗?
答案 0 :(得分:0)
在步骤4中,如果循环使用recv()或read()直到它返回0,那么您已经消耗了套接字的另一半。除了这个时间它是由远程端发起的。这可能解释了为什么第5步返回错误 - 没有什么可以关闭,因为远程端点已经关闭了连接的那一端。
在任何情况下,您都不需要步骤5,因为您正在步骤6中关闭套接字。“close”将关闭TCP连接的其余部分并关闭套接字文件描述符。