Jochen Arndt
Похоже, вы хотите определить WAN IP-адрес, назначенный маршрутизатору вашим провайдером (интернет-провайдером).
Распространенные методы, которые вы уже частично испробовали, - это подключение к серверу, который возвращает необходимую информацию. Это может быть либо конкретная услуга для таких целей, как whatismyip.com или протокол, который возвращает эту информацию. Но они могут потребовать некоторого времени, быть недоступны больше / временно и даже ошибочны при использовании прокси-сервера, расположенного за пределами вашей локальной сети.
Поскольку IP-адрес WAN меняется не часто, вы можете использовать один из вышеперечисленных методов и избежать блокировки вашего приложения, сделав это в фоновом потоке.
Единственный надежный метод требует, чтобы ваше приложение имело доступ к маршрутизатору (например, через Telnet, SSH или веб-интерфейс, доступ из локальной сети включен, и ваше приложение знает учетные данные для входа), а также чтобы маршрутизатор предоставлял возможность запрашивать эту информацию (что зависит от модели маршрутизатора).
Большинство маршрутизаторов записывают такую информацию также в файл журнала. Тогда было бы достаточно получить и проанализировать этот файл журнала.
Jochen Arndt
Общее решение состоит в том, чтобы создать соединение с внешней службой, которая возвращает информацию. Если вы заботитесь о скорости, напишите свой собственный сервис, который просто отвечает IP-адресом и размещает его где-нибудь. Это должно быть намного быстрее, чем служба на основе HTTP.