我不想在我的多客户端关闭单个服务器程序的套接字

时间:2013-10-07 07:14:05

标签: network-programming

我正在CentOS 6.2上构建一个C套接字程序,如下所示。

  1. 服务器正在侦听来自所有客户端的连接请求。

  2. 建立连接后,客户端开始将日志数据发送到单个服务器。

  3. 问题是所有客户端都将日志数据发送到同一端口,当客户端关闭连接时会发出CLOSE_WAIT

    浏览网页时,我读到我应该关闭套接字来杀死“CLOSE_WAIT”连接,这意味着服务器无法再接受来自其他客户端套接字的日志数据。

    有没有办法杀死端口上的特定会话?如果不可能,我应该创建多服务器监听器吗?

1 个答案:

答案 0 :(得分:2)

  

问题是所有客户端都将日志数据发送到同一端口,这会在客户端关闭连接时发出CLOSE_WAIT。

不,不。 CLOSE_WAIT表示(i)对等体已关闭其连接的结束,以及(ii)本地系统正在等待本地应用程序执行相同操作。它与“到同一个端口”无关,这就是所有TCP服务的工作方式。

  

我读到我应该关闭socket来杀死'CLOSE_WAIT'连接

正确。

  

表示服务器不能再接受来自其他客户端套接字的日志数据。

不,不。如果您关闭监听套接字,就会发生这种情况。您需要关闭接受的套接字,即您从EOS获得的套接字。

  

有没有办法杀死端口上的特定会话?

关闭套接字。

  

如果不可能,我应该创建多服务器监听器吗?

当然你已经做到了吗?

你对此没有任何选择。如果在读取套接字时收到流末尾,则无法从中读取任何内容。如初。