当服务器和客户端的Tcp连接一旦建立之后,即使客户端关闭连接, Connected的属性一直为True。使用Poll()函数可以解决这个问题。
clientSocket = serverSocket.Accept();
while (clientSocket.Poll(-1, SelectMode.SelectRead))
{
byte[] RecvBytes = new byte[1024];
int bytesLength = clientSocket.Receive(RecvBytes, RecvBytes.Length, 0);
if (bytesLength != 0)
{
strRecv = Encoding.ASCII.GetString(RecvBytes, 0, bytesLength);
}
//客户端断开
else
{
clientSocket.Shutdown(SocketShutdown.Both);
clientSocket.Close();
break;
}
}
clientSocket = serverSocket.Accept();
while (clientSocket.Poll(-1, SelectMode.SelectRead))
{
byte[] RecvBytes = new byte[1024];
int bytesLength = clientSocket.Receive(RecvBytes, RecvBytes.Length, 0);
if (bytesLength != 0)
{
strRecv = Encoding.ASCII.GetString(RecvBytes, 0, bytesLength);
}
//客户端断开
else
{
clientSocket.Shutdown(SocketShutdown.Both);
clientSocket.Close();
break;
}
}