-2

如果我失去与服务器的连接,我会在 10 分钟内启动警报。与此同时,我尝试创建一个套接字并重新建立与服务器的连接。如果警报响起时没有连接到服务器,我想关闭应用程序。

检查套接字上是否存在实时连接的好方法是什么?我不确定阻塞方法是否可以接受(显然如果没有其他选择的话)。

4

3 回答 3

1

如果我失去与服务器的连接,我会在 10 分钟内启动警报。

所以那时你知道没有联系。

与此同时,我尝试创建一个套接字并重新建立与服务器的连接。如果警报响起时没有连接到服务器,我想关闭应用程序。

检查套接字上是否存在实时连接的好方法是什么?我不确定阻塞方法是否可以接受(显然如果没有其他选择的话)。

如果您在设置警报时知道没有连接,为什么在警报到期时您不知道相同的事情?

在我看来,您需要做的就是检查套接字 fd。如果它不为零,则表示您有连接;如果它是零,你不会。并确保在设置警报时将其归零。

于 2013-09-13T09:43:57.757 回答
0

只需将“connect()”函数的结果保存在任何地方,这样您就可以在 10 分钟内检查它。

于 2013-09-13T09:04:07.157 回答
0

检查套接字上是否存在实时连接的好方法是什么?我不确定阻塞方法是否可以接受(显然如果没有其他选择的话)。

我假设从这个问题结束上面的解释,您知道如何处理丢失的连接,但不知道如何检查连接是否仍然存在。

检查连接是否仍然存在的最佳方法是定期向服务器发送虚拟/心跳/保持活动消息。一旦连接断开,tcp 套接字就会给您一个错误(超时后),因此您知道连接断开,您可以尝试重新连接/标记警报等。

于 2013-09-13T09:52:16.503 回答