我正在CentOS 6.2上构建一个C套接字程序,如下所示。
服务器正在侦听来自所有客户端的连接请求。
建立连接后,客户端开始将日志数据发送到单个服务器。
问题是所有客户端都将日志数据发送到同一端口,当客户端关闭连接时会发出CLOSE_WAIT
。
浏览网页时,我读到我应该关闭套接字来杀死“CLOSE_WAIT”连接,这意味着服务器无法再接受来自其他客户端套接字的日志数据。
有没有办法杀死端口上的特定会话?如果不可能,我应该创建多服务器监听器吗?
答案 0 :(得分:2)
问题是所有客户端都将日志数据发送到同一端口,这会在客户端关闭连接时发出CLOSE_WAIT。
不,不。 CLOSE_WAIT
表示(i)对等体已关闭其连接的结束,以及(ii)本地系统正在等待本地应用程序执行相同操作。它与“到同一个端口”无关,这就是所有TCP服务的工作方式。
我读到我应该关闭socket来杀死'CLOSE_WAIT'连接
正确。
表示服务器不能再接受来自其他客户端套接字的日志数据。
不,不。如果您关闭监听套接字,就会发生这种情况。您需要关闭接受的套接字,即您从EOS获得的套接字。
有没有办法杀死端口上的特定会话?
关闭套接字。
如果不可能,我应该创建多服务器监听器吗?
当然你已经做到了吗?
你对此没有任何选择。如果在读取套接字时收到流末尾,则无法从中读取任何内容。如初。