【问题标题】:getaddrinfo() returning very slowly on failuregetaddrinfo() 在失败时返回非常缓慢
【发布时间】:2014-05-12 16:44:22
【问题描述】:

我尝试在我的应用程序中使用getaddrinfo() 来确定我是否连接到互联网。只要getaddinfo() 能够成功返回一切都OK。但是,一旦我将计算机与路由器断开连接,该功能的执行就会失败,大约需要 10 秒。

是否有解决方案或有更好的功能来检查我是否连接到互联网?

注意here 已经问过类似的问题,但禁用 DNSClient 服务对我不起作用。

【问题讨论】:

  • 如果您考虑getaddrinfo 的工作原理,这是绝对正常的。它在hosts 中查找地址,如果这不起作用,则向主 DNS 服务器发送请求。该服务器将在其数据库中进行查找,如果找不到任何内容,则将请求转发到层次结构中的下一个 DNS 服务器。这将做同样的事情直到根。这可能需要一些时间。但是,您使用了错误的功能。 InternetGetConnectedState 函数的存在是有原因的。
  • 好的,谢谢。是否有其他功能可以更快地响应我的目的?
  • @ThunderStorm 怎么可能?你想知道答案吗?
  • 我编辑了屏幕截图,因为它实际上并没有显示getaddrinfo 通话的持续时间。你说它需要 10 秒就足够了。

标签: c++ windows winapi getaddrinfo


【解决方案1】:

BOOL InternetGetConnectedState( Out LPDWORD lpdwFlags, In DWORD dwReserved ) 函数可能是一个不错的选择。感谢达蒙。


InternetGetConnectedState 函数的存在是有原因的。 - @达蒙

【讨论】:

    猜你喜欢
    • 2019-06-08
    • 1970-01-01
    • 2011-01-18
    • 1970-01-01
    • 2020-09-02
    • 2010-10-24
    • 1970-01-01
    • 2012-06-13
    • 1970-01-01
    相关资源
    最近更新 更多