如何在基于C++/QT的安装程序中检测Internet断开连接

问题描述:

我们正在开发与Dropbox非常相似的win-mac文件同步安装程序。安装程序是用C++和QT构建的。我们有一个使用案例,如果互联网断开连接(插入网线(或没有连接到任何无线网络)),所以基本上无法访问网络,在这种情况下,我们需要使安装程序进入脱机状态。如何在基于C++/QT的安装程序中检测Internet断开连接

我尝试了一些方法,例如不断向我们的Web服务器进行轮询。如果我们无法达到那么我们检测为互联网分离连接。由于某些原因,我们希望有一个干净的本地实现,它将寻找机器网络连接。

我甚至尝试过http://msdn.microsoft.com/en-us/library/aa965303%28VS.85%29.aspx的窗口,但这是在wifi情况下失败,即使我们不连接到WiFi这个例子说“网络连接”。

任何人都可以提出其他的选择。平台特定的解决方案也受邀

您可能要查看INetworkManager::GetConnectivity,并在响应中检查NLM_CONNECTIVITY_IPV4_INTERNETNLM_CONNECTIVITY_IPV6_INTERNET

+0

感谢您的快速回复。它的作用像魅力。 – Engineer 2013-05-01 11:21:28

+0

但是我有一个疑问,它是否与INetworkListManager :: get_IsConnectedToInternet工作相同,因为这更直接地检查互联网连接。有关MAC OSX的任何建议? – Engineer 2013-05-01 11:22:51