博客园  :: 首页  :: 联系 :: 管理

在C#中,服务器如何判断客户端连接已经关闭

Posted on 2007-03-16 12:46  sunrack  阅读(888)  评论(0编辑  收藏  举报
        当服务器和客户端的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;
            }
        }