如果我失去与服务器的连接,我会在 10 分钟内启动警报。与此同时,我尝试创建一个套接字并重新建立与服务器的连接。如果警报响起时没有连接到服务器,我想关闭应用程序。
检查套接字上是否存在实时连接的好方法是什么?我不确定阻塞方法是否可以接受(显然如果没有其他选择的话)。
如果我失去与服务器的连接,我会在 10 分钟内启动警报。与此同时,我尝试创建一个套接字并重新建立与服务器的连接。如果警报响起时没有连接到服务器,我想关闭应用程序。
检查套接字上是否存在实时连接的好方法是什么?我不确定阻塞方法是否可以接受(显然如果没有其他选择的话)。
如果我失去与服务器的连接,我会在 10 分钟内启动警报。
所以那时你知道没有联系。
与此同时,我尝试创建一个套接字并重新建立与服务器的连接。如果警报响起时没有连接到服务器,我想关闭应用程序。
检查套接字上是否存在实时连接的好方法是什么?我不确定阻塞方法是否可以接受(显然如果没有其他选择的话)。
如果您在设置警报时知道没有连接,为什么在警报到期时您不知道相同的事情?
在我看来,您需要做的就是检查套接字 fd。如果它不为零,则表示您有连接;如果它是零,你不会。并确保在设置警报时将其归零。
只需将“connect()”函数的结果保存在任何地方,这样您就可以在 10 分钟内检查它。
检查套接字上是否存在实时连接的好方法是什么?我不确定阻塞方法是否可以接受(显然如果没有其他选择的话)。
我假设从这个问题结束上面的解释,您知道如何处理丢失的连接,但不知道如何检查连接是否仍然存在。
检查连接是否仍然存在的最佳方法是定期向服务器发送虚拟/心跳/保持活动消息。一旦连接断开,tcp 套接字就会给您一个错误(超时后),因此您知道连接断开,您可以尝试重新连接/标记警报等。