你那三句是在while循环完后执行,没错。
但service.Receive阻塞在这的,直到有数据或超时,或socket关闭
所以你客户端关闭了,才执行那三句。

解决方案 »

  1.   

    谢谢colorall, 也就是说那个service.Receive 会阻塞程序的执行,有数据接收了就执行while体内的部分,没有数据接收了,就一直阻塞下去!是这样的吗?
      

  2.   

    也就是说:当程序执行到while((i=service.Receive)!=0)时,判断,i不等于0则执行while体内程序,但是这时也执行了service.Receive啊,为什么会执行while体内的代码呢?
      

  3.   

    当service.Receive==0时,又是一个什么情况啊?
      

  4.   

    当有了接收数据,接收到的字节总数i=service.Receive(bytes)不等于0时就继续执行while体内的语句当客户端断开连接时,service.Receive(bytes)也把有效数据接收到bytes,但这时返回值就是i=service.Receive(bytes)=0.