在C中检测网络活动

时间:2013-09-13 08:56:41

标签: c sockets networking signals

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

检查套接字上是否有实时连接的好方法是什么?我不确定阻塞方法是否可以接受(显然,如果没有替代方法)。

3 个答案:

答案 0 :(得分:1)

  

如果我失去了与服务器的连接,我会在10分钟后启动闹钟。

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

  

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

     

检查套接字上是否有实时连接的好方法是什么?我不确定阻塞方法是否可以接受(显然,如果没有替代方法)。

如果您在设置闹钟时知道没有连接,为什么在它到期时你不知道同样的事情?

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

  

检查套接字上是否有实时连接的好方法是什么?我不确定阻塞方法是否可以接受(显然,如果没有替代方法)。

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

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