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代码片段吗
谢谢在以下情况下应关闭插座:
在这些情况下只需使用
socket.Close()
。在下列情况下应关闭套接字:
在这些情况下,只需使用
socket.Close()
。如果客户端完全断开连接,那么您将从EndReceive
读取0字节。然后可以关闭插座
如果连接断开,那么您需要一种方法来检测它。您需要通过套接字发送数据,以检测对方何时断开连接。这将导致在下一个套接字操作(例如,EndReceive
)时引发异常,然后可以关闭套接字
我在我的博客中有更详细的解释。如果客户端完全断开连接,那么您将从
EndReceive
读取0字节的数据。然后可以关闭插座
如果连接断开,那么您需要一种方法来检测它。您需要通过套接字发送数据,以检测对方何时断开连接。这将导致在下一个套接字操作(例如,EndReceive
)时引发异常,然后可以关闭套接字
我在我的博客中有一个更详细的解释。receive似乎是一个很好的解决方案,但如果我们将套接字置于receive模式,当它返回0字节时?在接收超时或??时,您必须执行所有提到的项目
Receive
应在客户端断开连接后立即返回0(或者可能引发异常)。请注意,这适用于TCP套接字。receive似乎是一个很好的解决方案,但如果我们将该套接字置于接收模式,当它返回0字节时?在接收超时或??时,您必须执行所有提到的项目Receive
应在客户端断开连接后立即返回0(或者可能引发异常)。请注意,这适用于TCP套接字。