【问题标题】:Determining Client Internet Connection (InternetGetConnectedState() lies)确定客户端 Internet 连接(InternetGetConnectedState() 谎言)
【发布时间】:2009-06-14 20:08:00
【问题描述】:

看来我不是唯一一个发现这一点的人: http://forums.devx.com/showthread.php?t=72771

其实两者都有:

InternetGetConnectedState

InternetGetConnectedStateEx

报告不正确。 当我连接时,它返回 0x12,当我未连接时,它返回 0x10 (0x10 未定义) http://msdn.microsoft.com/en-us/library/aa384705(VS.85).aspx

有人想猜一下 WinXP SP3 中 0x10 的定义吗?

在这个论坛上阅读了一些关于测试是否存在互联网连接 (C/C++) 的建议,例如 How can I programmatically test an HTTP connection?

我会编写一个 WinHTTP 函数来返回服务器主网页的标头,除了我要测试连接的服务器,只运行 CGI 应用程序。我宁愿不要浪费宝贵的服务器内存和处理器资源来确认数千个客户端连接。

还有其他建议吗?

【问题讨论】:

    标签: c++ windows winapi


    【解决方案1】:

    InternetGetConnectedState/Ex() 返回一个 DWORD,它是多个值的位掩码。值 0x12 是 INTERNET_CONNECTION_LAN (0x02) 和 INTERNET_CONNECTION_RAS_INSTALLED (0x10) 的组合。因此,当您连接时,INTERNET_CONNECTION_LAN 会被报告,而当您断开连接时,INTERNET_CONNECTION_LAN 会被忽略。

    【讨论】:

      【解决方案2】:

      确定 0x10 不是可能标志的组合?

      例如在这里我找到了WIN API Internet Get Connected State

      INTERNET_CONNECTION_RAS_INSTALLED = 0x10
      

      【讨论】:

        猜你喜欢
        • 2012-02-12
        • 1970-01-01
        • 2015-05-27
        • 2011-11-05
        • 2013-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-15
        相关资源
        最近更新 更多