谁关闭了套接字连接

时间:2010-12-03 15:29:24

标签: c# sockets tcp

我有一个服务器/客户端套接字应用程序,从http://msdn.microsoft.com/en-us/library/6y0e13d3.aspx上的示例看,服务器和客户端都会关闭并在接收数据后关闭连接。这是对的吗? 我一直在使用断开连接,但我无法重新打开连接,但使用了shutdown / close:

            if (_sender.Connected)
            {
                _sender.Shutdown(SocketShutdown.Both);
                _sender.Close();
            }

似乎工作正常。但是应该在客户端(启动器)和服务器(收件人)套接字上调用它吗? 感谢

2 个答案:

答案 0 :(得分:1)

您需要在客户端和服务器上执行此操作,因为它们都使用独立资源。当套接字关闭时,套接字可能会变得混乱(许多异常),因此您需要确保在客户端和服务器上都处理异常。

答案 1 :(得分:0)

哪一方开始收盘并不重要。如果关闭发生干净,那么另一方的下一个读操作将读取0个字节。如果关闭没有干净地发生,那么另一方的下一次读取操作将引发异常。

通常,期望来自任何套接字方法的异常(除了Close除外,它不会引发除fatal exceptions之外的异常)。每当您看到异常时,只需致电Close

P.S。 Connected没用,Shutdown在这种情况下无法获得任何收益。只需致电Close