关闭服务器上的空闲套接字

时间:2011-01-03 15:01:22

标签: c# .net sockets

您好
我想在服务器上关闭客户端与服务器应用程序断开连接但连接仍然打开的连接。有办法吗?任何C#代码段?

由于

2 个答案:

答案 0 :(得分:3)

如果客户端干净地断开连接,那么您将从EndReceive获得0字节的读取。然后,您可以关闭套接字。

如果连接断开,那么您需要一种方法来检测它。您需要通过套接字发送数据以检测对方何时断开连接。这将导致在下一个套接字操作(例如EndReceive)上抛出异常,然后您可以关闭套接字。

我在博客文章Detection of Half-Open (Dropped) Connections中有更详细的解释。

答案 1 :(得分:1)

套接字应在以下情况下关闭:

  1. 任何套接字方法都会抛出异常。
  2. Receive / EndReceive返回0字节
  3. Send / EndSend返回0个字节。
  4. 在这些情况下,只需使用socket.Close()