2013-05-07 74 views
1

我正确地说,当另一端关闭套接字时,Socket.Receive将抛出包含连接重置消息的SocketException。如果另一端调用Socket.Shutdown(Shutdown.Send),它将返回0字节。什么时候一个Socket接收返回0字节,什么时候会抛出一个SocktException?

这是我的测试已经确认,但文档没有说明明确性。我可能只是为了某些其他原因而读取0字节。

+0

很难确定没有设置测试装置,但是IIRC通常是一个干净封闭的套接字,它将返回0,无论它是否首先关闭发送通道 – 2013-05-07 09:42:37

回答

0

我的测试表明你是对的。这里有一些来自MSDN: “如果远程主机使用Shutdown方法关闭Socket连接,并且已收到所有可用数据,则Receive方法将立即完成并返回零字节。” http://msdn.microsoft.com/en-us/library/8s4y8aff.aspx

相关问题