日期:2014-05-20  浏览次数:20692 次

.net里的Socket编程怎么解决另外一端突然断开的问题?
网上给的范例,简单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断开连接"就说明对方下线了.
}