在 C 应用程序中检查 Internet 连接的可靠方法:gethostbyname() 失败

新手上路,请多包涵

我正在 Windows 上开发 C++ 网络应用程序。我需要检查互联网连接是否存在。我正在使用 gethostbyname() ,但是当系统通过代理连接时,它给出的信息不正确。 InternetCheckConnection()InternetGetConnectedState() 在不同条件下也没有给出可靠的结果。是否有可靠的方法来检查覆盖所有条件(例如代理和 VPN)的互联网连接?

更新:

在我们公司网络中 WinHttpGetProxyForUrl() 失败并出现错误 ERROR_WINHTTP_AUTODETECTION_FAILEDWinHttpSendrequest() 失败并出现错误 ERROR_WINHTTP_NAME_NOT_RESOLVED

在开放网络中 WinHttpSendrequest() 成功。

原文由 user1513845 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 588
1 个回答

简单的老方法!

包括:

 #include <wininet.h>
#pragma comment(lib,"Wininet.lib")

在您的方法中:

 char url[128];
strcat(url, "http://www.techtoolbox.com");
bool bConnect = InternetCheckConnection(url, FLAG_ICC_FORCE_CONNECTION, 0);

if (bConnect)
{
    //internet connection exists !
}
else
{
            //internet DOES NOT connection exists !
}

希望能帮助到你。

原文由 bluwater2001 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题