【发布时间】:2014-05-12 16:44:22
【问题描述】:
我尝试在我的应用程序中使用getaddrinfo() 来确定我是否连接到互联网。只要getaddinfo() 能够成功返回一切都OK。但是,一旦我将计算机与路由器断开连接,该功能的执行就会失败,大约需要 10 秒。
是否有解决方案或有更好的功能来检查我是否连接到互联网?
注意: here 已经问过类似的问题,但禁用 DNSClient 服务对我不起作用。
【问题讨论】:
-
如果您考虑
getaddrinfo的工作原理,这是绝对正常的。它在hosts中查找地址,如果这不起作用,则向主 DNS 服务器发送请求。该服务器将在其数据库中进行查找,如果找不到任何内容,则将请求转发到层次结构中的下一个 DNS 服务器。这将做同样的事情直到根。这可能需要一些时间。但是,您使用了错误的功能。InternetGetConnectedState函数的存在是有原因的。 -
好的,谢谢。是否有其他功能可以更快地响应我的目的?
-
@ThunderStorm 怎么可能?你想知道答案吗?
-
我编辑了屏幕截图,因为它实际上并没有显示
getaddrinfo通话的持续时间。你说它需要 10 秒就足够了。
标签: c++ windows winapi getaddrinfo