3

我已经使用配置了我的 C# .Net 套接字

m_clientSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, Convert.ToInt32(True))

m_clientSocket.IOControl(IOControlCode.KeepAliveValues, SIO_KEEPALIVE_VALS, result)

我的设置是每 30 秒发送一次,然后在未收到第一个确认时每 10 秒发送一次。

当连接建立时,我可以看到保持活动状态和保持活动状态确认标志被发送和接收到我的服务器。

当连接断开时,我可以看到我的保持活动被发送并且没有收到确认。我可以看到发送的保持活动已根据我的设置改变了它们的行为,即每 10 秒发送一次,而不是每 30 秒发送一次。

我期待某种事件触发,以便我可以响应中断(即关闭套接字,然后开始尝试回收它)。

谁能告诉我如何了解 Keep Alives 已经注意到连接断开的事实?

谢谢阿迪

4

1 回答 1

1

套接字不会引发有关其连接状态(或其他任何事情)的事件。要检测失败,您需要执行发送或接收操作。

如果您定期轮询套接字,您还应该得到失败的指示。这里有一个例子: 立即检测客户端与服务器套接字的断开连接

于 2011-06-22T18:14:11.933 回答