我有一个服务器/客户端套接字应用程序,从http://msdn.microsoft.com/en-us/library/6y0e13d3.aspx上的示例看,服务器和客户端都会关闭并在接收数据后关闭连接。这是对的吗? 我一直在使用断开连接,但我无法重新打开连接,但使用了shutdown / close:
if (_sender.Connected)
{
_sender.Shutdown(SocketShutdown.Both);
_sender.Close();
}
似乎工作正常。但是应该在客户端(启动器)和服务器(收件人)套接字上调用它吗? 感谢
答案 0 :(得分:1)
您需要在客户端和服务器上执行此操作,因为它们都使用独立资源。当套接字关闭时,套接字可能会变得混乱(许多异常),因此您需要确保在客户端和服务器上都处理异常。
答案 1 :(得分:0)
哪一方开始收盘并不重要。如果关闭发生干净,那么另一方的下一个读操作将读取0个字节。如果关闭没有干净地发生,那么另一方的下一次读取操作将引发异常。
通常,期望来自任何套接字方法的异常(除了Close
除外,它不会引发除fatal exceptions之外的异常)。每当您看到异常时,只需致电Close
。
P.S。 Connected
没用,Shutdown
在这种情况下无法获得任何收益。只需致电Close
。