【发布时间】:2012-08-01 05:18:53
【问题描述】:
我正在 Windows 上开发一个 c++ 网络应用程序。我需要检查互联网连接是否存在。我正在使用 gethostbyname(),但是当系统通过代理连接时,它给出的信息不正确。 InternetCheckConnection() 和 InternetGetConnectedState() 在不同条件下也没有给出可靠的结果。是否有可靠的方法来检查覆盖所有条件(例如代理和 VPN)的互联网连接?
更新:
在我们公司的网络中,WinHttpGetProxyForUrl() 失败并出现错误 ERROR_WINHTTP_AUTODETECTION_FAILED 并且 WinHttpSendrequest() 失败并出现错误 ERROR_WINHTTP_NAME_NOT_RESOLVED。
在开放网络中 WinHttpSendrequest() 成功。
【问题讨论】:
-
听起来您在 Windows 平台上工作,但您可能希望在您的问题中明确说明这一点。任何答案都必然取决于操作系统。
-
感谢@Greg。编辑并添加了 Windows。
-
您如何定义“互联网连接”? gethostbyname() 给你什么不正确的信息?我认为大多数 LAN 都提供 DNS 服务,因此通常您会期望它可以工作,但这当然并不意味着您可以实际联系相关主机。
-
你在使用 WinHttpGetDefaultProxyConfiguration 吗?系统代理设置是否正确定义,例如 Internet Explorer 是否正常工作?
-
是的,系统代理设置已正确定义,Internet Explorer 正常工作。
标签: c++ windows networking