我目前正在开发一种工具,可以在特定情况下自动连接和验证用户到某些无线热点。 为了测试设备是否在强制门户后面,我通过wininet发送http请求并检查它是否被重定向(是的我知道NCSI但在这种情况下它不能正常工作)。
如果我在获得成功的wlan连接回调后直接执行此操作,则会收到错误12007(名称未解析),我认为这是因为ipconfig未在该点完全应用。如果我在Sleep()中放置2-3秒钟我没有收到错误(因为我的硬件阵容中有一个更快的设备,它可能会因其他目标设备而异)。
有没有办法可以通过编程方式检查配置是否已完全应用于界面?
目标操作系统是Windows 7
在这种情况下,像Jon建议的重试并不是真正可行的选项,因为我必须在防火墙中启用热点注册模式,在一定数量的网络操作之后再次关闭,这就是为什么我要避免这种情况。
答案 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服务器以返回否定响应。