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

C# 关闭服务器上的空闲套接字,c#,.net,sockets,C#,.net,Sockets,你好 我想关闭一个服务器上的连接,该服务器上的客户端已从服务器应用程序断开,但连接保持打开状态。有办法吗?有C代码片段吗 谢谢在以下情况下应关闭插座: 任何套接字方法都会引发异常 Receive/EndReceive返回0字节 Send/EndSend返回0字节 在这些情况下只需使用socket.Close()。在下列情况下应关闭套接字: 任何套接字方法都会引发异常 Receive/EndReceive返回0字节 Send/EndSend返回0字节 在这些情况下,只需使用socket.Close

你好
我想关闭一个服务器上的连接,该服务器上的客户端已从服务器应用程序断开,但连接保持打开状态。有办法吗?有C代码片段吗


谢谢

在以下情况下应关闭插座:

  • 任何套接字方法都会引发异常
  • Receive/EndReceive返回0字节
  • Send/EndSend返回0字节

  • 在这些情况下只需使用
    socket.Close()

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

  • 任何套接字方法都会引发异常
  • Receive/EndReceive返回0字节
  • Send/EndSend返回0字节

  • 在这些情况下,只需使用
    socket.Close()

    如果客户端完全断开连接,那么您将从
    EndReceive
    读取0字节。然后可以关闭插座

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


    我在我的博客中有更详细的解释。

    如果客户端完全断开连接,那么您将从
    EndReceive
    读取0字节的数据。然后可以关闭插座

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


    我在我的博客中有一个更详细的解释。

    receive似乎是一个很好的解决方案,但如果我们将套接字置于receive模式,当它返回0字节时?在接收超时或??时,您必须执行所有提到的项目
    Receive
    应在客户端断开连接后立即返回0(或者可能引发异常)。请注意,这适用于TCP套接字。receive似乎是一个很好的解决方案,但如果我们将该套接字置于接收模式,当它返回0字节时?在接收超时或??时,您必须执行所有提到的项目
    Receive
    应在客户端断开连接后立即返回0(或者可能引发异常)。请注意,这适用于TCP套接字。