验证是否已应用ipconfig

时间:2016-08-09 15:27:46

标签: c++ dhcp wininet wlanapi

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

如果我在获得成功的wlan连接回调后直接执行此操作,则会收到错误12007(名称未解析),我认为这是因为ipconfig未在该点完全应用。如果我在Sleep()中放置2-3秒钟我没有收到错误(因为我的硬件阵容中有一个更快的设备,它可能会因其他目标设备而异)。

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

目标操作系统是Windows 7

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

2 个答案:

答案 0 :(得分:0)

通常对于这种情况,如果你的错误是可捕获的,你会重试一段时间然后放弃(超时)最近的错误。这比操作系统无论如何都要简单和相同的逻辑

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

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

答案 1 :(得分:0)

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