如何知道客户端何时与C#中的服务器断开连接?

时间:2010-05-20 09:33:16

标签: c# client-server

我在C#中有一个Client-Server程序 这是服务器的代码:

...
String dataFromClient =  "";
NetworkStream networkStream;
TcpClient clientSocket;
bool transfer = true;
...
while (transfer)
        {

             networkStream = clientSocket.GetStream();
             networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize);
             dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom);
             dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$"));
             ....
         }

我想提出一个在客户端断开连接时停止循环的条件 我怎么能这样做?
非常感谢,

1 个答案:

答案 0 :(得分:1)

好吧,试一试 - 如果客户端断开连接,你会发现你在某一点上得到IoException。需要多长时间 - 可能需要很长时间(如果diconnect是网络中断/断电的话,TCP堆栈必须等待超时)。

结束的“正确”方式是客户端向服务器发送结束命令,服务器断开客户端。这允许服务器尽快摆脱客户端。许多互联网协议实现了这一点,要么是隐式的(HTTP - 除非要求服务器在发送数据后断开客户端的连接),要么是显式的(SMTP-具有客户端应该发送给服务器的QUIT命令)。