网上给的范例,简单socket服务器,在连接完毕后保持接收对方消息时的代码大部分类似下面的
Socket myClientSocket = (Socket)clientSocket;
while (true)
{
try
{
//通过clientSocket接收数据
int receiveNumber = myClientSocket.Receive(result);
Console.WriteLine("接收客户端{0}消息{1}", myClientSocket.RemoteEndPoint.ToString(), Encoding.ASCII.GetString(result, 0, receiveNumber));
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
myClientSocket.Shutdown(SocketShutdown.Both);
myClientSocket.Close();
break;
}
}
但是这个方法有个很麻烦的问题,当客户端突然主动断开,或者网络自身突然断掉的情况下,不会出现异常,但是在这个时候会不停的执行while 里的内容,这该怎么处理呢?网上没有C#像c++那样明确处理网络断开的例子
------解决方案--------------------
try
{
}
catch e
{
//如果e的message里面有什么"XXXX断开连接"就说明对方下线了.
}