我正在尝试创建一个服务器/客户端程序但是当我的互联网(服务器主机)断开连接时,客户认为它们仍然连接但它们不是(当然)。当我通过关闭过程正常关闭服务器时,它完全正常。我用来检查连接是否仍然存在的代码:
if (_clientSocket != null)
{
if (firstConnect != true)
{
if (!_clientSocket.Connected)
{
Console.WriteLine("Not connected");
LoopConnect();
}
else
{
Console.WriteLine("Connected");
}
}
}
Thread.Sleep(1000);
}
我还尝试使用此方法将if (!_clientSocket.Connected)
替换为if (!SocketConnected(_clientSocket)
:
static bool SocketConnected(Socket s)
{
bool part1 = s.Poll(1000, SelectMode.SelectRead);
bool part2 = (s.Available == 0);
if (part1 && part2)
return false;
else
return true;
}
但两者都转到其他地方并打印已连接。我无能为力,为什么只有当我的互联网断开连接而不是我正常关闭服务器时才会发生这种情况。提前谢谢!