我在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("$"));
....
}
我想提出一个在客户端断开连接时停止循环的条件
我怎么能这样做?
非常感谢,
答案 0 :(得分:1)
好吧,试一试 - 如果客户端断开连接,你会发现你在某一点上得到IoException。需要多长时间 - 可能需要很长时间(如果diconnect是网络中断/断电的话,TCP堆栈必须等待超时)。
结束的“正确”方式是客户端向服务器发送结束命令,服务器断开客户端。这允许服务器尽快摆脱客户端。许多互联网协议实现了这一点,要么是隐式的(HTTP - 除非要求服务器在发送数据后断开客户端的连接),要么是显式的(SMTP-具有客户端应该发送给服务器的QUIT命令)。