【问题标题】:Verify that ipconfig was applied验证是否应用了 ipconfig
【发布时间】:2016-08-09 15:27:46
【问题描述】:

我目前正在开发一种工具,该工具可在特定情况下自动将用户连接到某些无线热点并对其进行身份验证。 为了测试设备是否在强制门户后面,我通过 wininet 发送一个 http 请求并检查它是否被重定向(是的,我知道 NCSI,但在这种情况下它不能正常工作)。

如果我在获得成功的 wlan 连接的回调后直接执行此操作,我会收到错误 12007(名称未解析),我认为这是因为 ipconfig 那时没有完全应用。如果我在 Sleep() 中输入 2-3 秒,我不会收到错误消息(因为我在我们的硬件系列中拥有更快的设备之一,它可能在其他目标设备上有所不同)。

有没有办法以编程方式检查配置是否已完全应用于界面?

目标操作系统是 Windows 7

在这种情况下,像 Jon 建议的那样重试并不是一个真正可行的选项,因为我必须在防火墙中启用热点注册模式,该模式会在一定数量的网络操作后再次关闭,这就是我想避免这种情况的原因。

【问题讨论】:

    标签: c++ dhcp wininet wlanapi


    【解决方案1】:

    通常对于这样的情况,如果您的错误是可捕获的,您会重试一段时间,然后放弃(超时)最近的错误。这更简单,并且操作系统将实现相同的逻辑

    所以,在这种情况下,我会:

    For X(default 30) seconds at most {
      test if I can get a dns resolution
      delay 1 second
    }
    

    【讨论】:

    • 您好乔恩,感谢您的回复。这基本上就是我目前正在做的事情。这种方法的问题是我必须在防火墙中启用热点注册模式,该模式在一定数量的网络操作后会自动关闭,这就是为什么我希望避免过于频繁地尝试。我想我应该添加该信息...
    【解决方案2】:

    很可能最简单的解决方案是使用您控制的域中随机生成的名称进行 DNS 查找。例如。 79BF2DA7-EE45-4E11-89A4-45EEF2838003.guid.example.com。这当然应该失败,但它必须通过从 DNS 服务器返回否定响应来失败。并且该 DNS 服务器必须可以访问才能返回否定响应。

    【讨论】:

      猜你喜欢
      • 2016-11-19
      • 1970-01-01
      • 1970-01-01
      • 2017-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-06
      相关资源
      最近更新 更多