是否可以检测套接字是否处于CLOSE_WAIT状态?

时间:2014-05-14 22:00:55

标签: c# sockets tcpclient

我正在使用TcpClient对象来发送和接收数据。当客户端失去连接时,我可以通过使用TcpView看到其关联的连接处于CLOSE_WAIT状态。在c#中是否可以看到套接字的状态?我只是想检测CLOSE_WAIT状态,以便我可以关闭服务器端的套接字。据我所知,我可以等待接收一定时间的字节,然后在没有收到任何内容的情况下关闭连接。我只想立即关闭套接字及其线程。是否可以在c#端检测到套接字的状态? TcpView程序可以确定这一点。 c#程序可以这样做吗?

1 个答案:

答案 0 :(得分:0)

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

同样不理想,因为它有点笨拙,就是拨打Poll()SelectRead)。如果它返回true,则要么读取数据要么关闭连接。如果没有数据要读,那就是你的答案。