是否有可能检测套接字是否处于CLOSE_WAIT状态

本文关键字:是否 WAIT 状态 CLOSE 有可能 检测 套接字 | 更新日期: 2023-09-27 18:03:20

我使用TcpClient对象发送和接收数据。当客户端失去连接时,我可以使用TcpView看到其关联的连接处于CLOSE_WAIT状态。在c#中可以看到套接字的状态吗?我只是想检测CLOSE_WAIT状态,这样我就可以关闭服务器端的套接字。我明白,我可以等待接收一定时间的字节,然后关闭连接,如果没有收到任何东西。我宁愿立即关闭套接字及其线程。套接字的状态是否可以在c#端检测到?TcpView程序可以确定这一点。c#程序能做到这一点吗?

是否有可能检测套接字是否处于CLOSE_WAIT状态

这不是理想的,但是如果您检查socket.Available,它将抛出SocketException。但是,您仍然需要检查原因。

也不理想,因为它有点笨拙,是调用Poll()(与SelectRead)。如果它返回true,要么有数据要读,要么连接关闭。如果没有数据可读,那么这就是你的答案。