【问题标题】:Check for Internet connection in C++?在 C++ 中检查 Internet 连接?
【发布时间】:2013-09-05 21:39:55
【问题描述】:

感谢阅读! 问题是我正在尝试检查我用 C++ 构建的应用程序中是否有互联网连接。我试过这个方法:

bool ICon(){
if (system("ping -c1 -s1 www.google.com"))
{return false;}else{return true;}
}

我将该方法链接到按键的侦听器,这很有效,但我希望将应用程序提升到一个新的水平。我不想按一个键来检查是否有互联网连接。所以这个方法应该一直在运行检查互联网的可用性,一旦断开连接给我一个“FALSE”。好吧,使用前一种方法的 while 循环,应用程序崩溃了。还有其他快速连续检查互联网连接的想法吗?

提前致谢!!

【问题讨论】:

  • 有没有网络就等于能ping通google?我不是在开玩笑,只是想了解您的要求是什么
  • 当 www.google.com 关闭时会发生什么?
  • 人们开始在街上奔跑,在空中挥手,尖叫。或多或少会发生这样的事情:)

标签: c++ connection


【解决方案1】:

我个人认为我会通过以下两种方法中的一种(或组合)来解决这个问题。

  1. 使用回调函数创建一个计时器,每隔 x 秒检查一次互联网连接。
  2. 在每个通信阻塞之前检查互联网访问,如果在给定时间没有可用访问,则引发异常。

您可能想阅读有关 C# 的类似讨论

How to query internet connection status in C# ?

【讨论】:

  • 好吧,我尝试了计时器,但让一切变得超级慢。我也尝试了第二个选项,但是我经常通过套接字发送数据,所以在每条消息都不是一个选项之前检查互联网,至少不能使用 ping(需要很长时间才能检查谷歌)。我喜欢计时器的想法,但是如何让计时器并行运行,而不用等待它的其余代码?
  • 我想知道,您为什么要检查互联网是否可用?如果信息到达端点是至关重要的,那么 TCP 套接字就可以解决问题。如果数据包丢失没关系,UDP 是你的朋友。
猜你喜欢
  • 2023-03-31
  • 2010-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-15
  • 1970-01-01
相关资源
最近更新 更多