客户端:Socketabc.Close();(两端都是采用异步)
然后就会在服务器端接收到无数个空包?是什么原因

解决方案 »

  1.   

    正常的,当SOCKET一端逻辑终止时(不是物理终止,比如拨网线),另一端就会认为收到了数据,但这个数据包的大小是0,你可以用这个来判断SOCKET是否出现故障了,这时你必须对此进行处理,比较关闭这个连接,否则每次检查时都会认为收到一个空包。
      

  2.   

    情况确实如 Lastcsdner(外行) 所说的一样,那还有什么情况会导致此情况的发生,用什么方法去处理这类情况是最好的?
      

  3.   

    出现原因:一、用户正常退出,这时你还循环调用了Receive方法时会出现。并会陷入死循环。
        二、用户非正常退出,包括拔网线,死机,服务器会捕捉到一个异常
    处理方法:一、你只要在循环里对数据进行判断一下,如果数据为0就中止循环,并关闭此Socket连接即可
    二、在服务器端建一个异常处理程序即可