客户端还需要在服务器关闭连接时调用close

时间:2013-05-01 15:26:45

标签: sockets networking tcp

因此,想象一下客户端从套接字读取并读取返回0的情况。这意味着EOF或服务器已关闭连接。

客户端是否也应该在此文件描述符上调用close?如果客户端没有调用close会导致一些文件描述符泄漏吗?

1 个答案:

答案 0 :(得分:2)

是的你还需要关闭它。即使远程主机已关闭连接,手柄也存在于您的计算机上。

您仍然可以引用套接字(即使连接本身已关闭,也可以调用其中的各种方法,包括read()。在您调用close()后,句柄已完全消失,因此调用方法的可能性更大引起分段错误而不是简单地返回0。

要清楚。调用close()有两个动作。

  1. 它发送适当的数据包告诉远程主机套接字已关闭。
  2. 它清除与该套接字关联的内存。
  3. 因此,即使远程主机关闭套接字,您仍需要关闭以清理内存。