#c# #.net #system.net
#c# #.net #system.net
Вопрос:
Мне известно о NetworkChange.NetworkAddressChanged
событии, но это только для локальных сетевых интерфейсов.
Какой наилучший способ определить, изменился ли общедоступный IP-адрес шлюза? Предположительно, это нужно сделать путем опроса внешнего надежного адреса, такого google.com …?
Комментарии:
1. Опрос звучит так, как будто это был бы лучший способ. Возможно, опросить / очистить сайт, подобный «whatismyip.com «…
Ответ №1:
Вот один из них от Akamai: http://whatismyip.akamai.com /
Ответ №2:
Если маршрутизатор поддерживает это, вы могли бы использовать SNMP для запроса его общедоступного IP-адреса (или, по крайней мере, когда я пытался это сделать, мне пришлось запрашивать все IP-адреса и отфильтровывать частные адреса). Вам нужно будет определить OID (идентификаторы объектов), которые соответствуют значениям IP-адреса, которые, я полагаю, должны быть одинаковыми для всех маршрутизаторов. Регулярно опрашивайте маршрутизатор и сравнивайте предыдущий результат с текущим результатом. В качестве альтернативы, настройте SNMP Trap, чтобы маршрутизатор уведомлял ваше приложение об изменении IP-адреса. Для реализации может потребоваться больше работы, чем простая обработка HTML-кода с веб-сайта «какой у меня IP», но это будет более эффективным, возможно, более надежным, не будет генерировать трафик глобальной сети, и вам не придется полагаться на веб-сайт, который вы не контролируете, который может нарушить работу вашего приложения, заблокировав вас или изменив структуру их HTML.
# SNMP — это библиотека SNMP с открытым исходным кодом для .NET.
Ответ №3:
Использование внешнего API — единственный надежный метод. Большинство из тех, кто раскрывает ваш IP-адрес, блокируют запрос, сделанный машиной, и запрашивают ввод CAPTCHA. Вот хороший вариант, который позволяет машинам отправлять запрос:
Комментарии:
1. К сожалению, эта ссылка больше не работает, она возвращает «Извините, здесь нечего смотреть»