Убедитесь, что ipconfig был применен

В настоящее время я разрабатываю инструмент, который автоматически подключает и аутентифицирует пользователей к определенным беспроводным точкам доступа при определенных обстоятельствах.
Чтобы проверить, находится ли устройство за неактивным порталом, я отправляю запрос http через wininet и проверяю, перенаправлено ли оно (да, я знаю о NCSI, но в этом случае он работает неправильно).

Если я делаю это сразу после получения обратного вызова для успешного wlan-соединения, я получаю сообщение об ошибке 12007 (имя не разрешено), которое, как я полагаю, связано с тем, что ipconfig не был полностью применен в этой точке. Если я включаю Sleep () на 2-3 секунды, я не получаю сообщение об ошибке (так как у меня одно из более быстрых устройств в нашей линейке оборудования, оно может отличаться на других целевых устройствах).

Есть ли способ, которым я могу программно проверить, была ли конфигурация полностью применена к интерфейсу?

Целевая ОС — Windows 7

Повторение, как предлагает Джон, на самом деле не является выполнимым вариантом в этом случае, поскольку мне нужно включить режим регистрации Hotspot в брандмауэре, который снова закрывается после определенного количества сетевых операций, поэтому я хотел бы избежать этого.

-1

Решение

Обычно для такой ситуации, если ваша ошибка поддается обнаружению, вы должны повторить попытку в течение определенного промежутка времени, а затем сдаться (timeout) с самой последней ошибкой. Это проще и та же логика, что ОС будет реализовывать в любом случае

Итак, в этом случае я бы:

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

Другие решения

Вполне возможно, что самым простым решением было бы выполнить поиск DNS, используя случайно сгенерированное имя в домене, которым вы управляете. Например. 79BF2DA7-EE45-4E11-89A4-45EEF2838003.guid.example.com, Это, конечно, должно завершиться ошибкой, но оно должно завершиться ошибкой, возвращая отрицательный ответ от DNS-сервера. И этот DNS-сервер должен быть доступен для возврата отрицательного ответа.

0

По вопросам рекламы [email protected]