Member 13857021 Ответов: 2

Вам публичный IP без замедления работы приложений VB.NET


Я хотел бы знать, как получить публичный IP-адрес, не замедляя работу устройства. Будет лучше, если не будет необходимости использовать какие-либо веб-сайты, так как я думаю, что это замедляет работу приложения примерно на 10 секунд.

Что я уже пробовал:

Я использовал сеть.Webclient с загрузочной строкой. Но это не очень хороший вариант, даже если я получаю результат IP.

2 Ответов

Рейтинг:
2

Jochen Arndt

Похоже, вы хотите определить WAN IP-адрес, назначенный маршрутизатору вашим провайдером (интернет-провайдером).

Распространенные методы, которые вы уже частично испробовали, - это подключение к серверу, который возвращает необходимую информацию. Это может быть либо конкретная услуга для таких целей, как whatismyip.com или протокол, который возвращает эту информацию. Но они могут потребовать некоторого времени, быть недоступны больше / временно и даже ошибочны при использовании прокси-сервера, расположенного за пределами вашей локальной сети.

Поскольку IP-адрес WAN меняется не часто, вы можете использовать один из вышеперечисленных методов и избежать блокировки вашего приложения, сделав это в фоновом потоке.

Единственный надежный метод требует, чтобы ваше приложение имело доступ к маршрутизатору (например, через Telnet, SSH или веб-интерфейс, доступ из локальной сети включен, и ваше приложение знает учетные данные для входа), а также чтобы маршрутизатор предоставлял возможность запрашивать эту информацию (что зависит от модели маршрутизатора).

Большинство маршрутизаторов записывают такую информацию также в файл журнала. Тогда было бы достаточно получить и проанализировать этот файл журнала.


Member 13857021

Это может работать только для одного компьютера со знанием имени пользователя и пароля маршрутизатора. Я ищу общее решение.

Jochen Arndt

Общее решение состоит в том, чтобы создать соединение с внешней службой, которая возвращает информацию. Если вы заботитесь о скорости, напишите свой собственный сервис, который просто отвечает IP-адресом и размещает его где-нибудь. Это должно быть намного быстрее, чем служба на основе HTTP.

Member 13857021

Я попробовал HTTP-файл с backgroundworker. Это быстрее.

Рейтинг:
2

Gerry Schmitz

Использование класса IP-адрес :

Класс IPAddress (System.Net)[^]


Member 13857021

Не могли бы вы привести пример, поскольку я не получаю никакого представления о том, как использовать этот класс.