【发布时间】:2010-10-17 20:37:12
【问题描述】:
如何检测到客户端与我的服务器断开连接?
我的AcceptCallBack 方法中有以下代码
static Socket handler = null;
public static void AcceptCallback(IAsyncResult ar)
{
//Accept incoming connection
Socket listener = (Socket)ar.AsyncState;
handler = listener.EndAccept(ar);
}
我需要想办法尽快发现客户端已从handler Socket 断开。
我试过了:
handler.Available;handler.Send(new byte[1], 0, SocketFlags.None);handler.Receive(new byte[1], 0, SocketFlags.None);
当您连接到服务器并想要检测服务器何时断开连接时,上述方法有效,但它们不起作用当您是服务器并想要检测客户端断开连接时。
任何帮助将不胜感激。
【问题讨论】:
-
@Samuel:TCP 和连接标签 与这篇文章非常相关,因为 TCP 保持连接(而其他网络协议,如 UDP 则没有)。跨度>
-
更多关于心跳解决方案的信息来自我的博客:Detection of Half-Open (Dropped) Connections
-
这里描述的解决方案对我很有效:stackoverflow.com/questions/1387459/…
标签: .net c# sockets tcp connection