如何正确检测客户端已关闭连接?我尝试过发送测试。
byte[] tmp = new byte[1];
bool blockingState = true;
if (_socket != null)
{
blockingState = _socket.Blocking;
_socket.Blocking = false;
_socket.Send(tmp, 0, 0);
}
答案 0 :(得分:0)
您需要每次轮询连接以查看连接是否仍处于活动状态。这是我使用的代码:
bool SocketConnected(Socket s)
{
bool part1 = s.Poll(1000, SelectMode.SelectRead);
bool part2 = (s.Available == 0);
if (part1 && part2)
return false;
else
return true;
}
它的工作原理如下:
如果
,则Poll返回trues.Available返回可用于读取的字节数
如果两者都是真的: 没有可供读取的数据,因此连接无效