错误代码是:int j = clientinfo.ns.EndRead(iar);
这句代码我是用来判断客户端是不是关闭了socket,如果j=0就是
客户端闭了socket
错误信息如下:
System.IO.IOException: 无法从传输连接中读取数据: 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。。 ---> System.Net.Sockets.SocketException: 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
在 System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult)
在 System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)
--- 内部异常堆栈跟踪的结尾 ---
在 System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)
建议用 EndReceive(IAsyncResult asyncResult, out SocketError errorCode) 重载函数。在完成回调后不会抛出异常。 你可以通过 errorCode 看是什么原因导致的。
正常情况下返回 0 长度字节。
如果客户端主动断开, 通常是 SocketError.ConnectionReset;
如果是服务端主动断开通常是 SocketError.ConnectionAborted;
(这两种情况发生后,通常当前套接字不可用了。 不过可以为以后重用)
最后一种比较常见的是 SocketError.IOPending;
(这种情况发生后,通常是重新投递读取请求)
还有其它可能的情况...
请问如何解决的?