Java получает мой IP-адрес

Я пытаюсь получить свой IP-адрес в Интернете на Java, но продолжаю получать свой локальный адрес (например, 127.0.0.1), когда мой IP-адрес 192.168.0. xxx

Я использую строку:

InetAddress.getLocalHost().getHostAddress();

, которая кажется стандартной для получения IP-адреса, но это не то, что я ищу. В каждом руководстве говорится об использовании этой строки, поэтому я немного запутался.

Кто-нибудь, пожалуйста, дайте мне знать, как я могу получить свой правильный IP-адрес?


Я использую устройство, подключенное к Wi-Fi, и я не использую кабель. Я подключаюсь к серверу, используя IP-адрес, предоставленный ifconfig inet addr, и я хочу получить inet-адрес устройства. Я мог бы проверить IP-адрес сокета на стороне сервера, но подумал, что было бы лучше, если бы устройство (клиент) сообщало серверу, какой IP-адрес он ожидает от других устройств для подключения.

27
задан Andrew Thompson 10 November 2011 в 17:22
поделиться

3 ответа

Давайте спросим AWS

URL url = new URL("http://checkip.amazonaws.com/");
BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
System.out.println(br.readLine());

РЕДАКТИРОВАТЬ

Перед тем, как понизить голосование, я хорошо знаю, что это не решение Java. Это общее решение для любого языка программирования. Другие решения не работают для меня так же хорошо. Также я считаю, что самый простой способ узнать ваш IP - это зайти в Интернет. Это может быть любой сайт, сервер может вернуть ваш клиентский ip, который он получил в запросе. Вы можете настроить свою собственную конечную точку для этого.

9
ответ дан 28 November 2019 в 04:18
поделиться

Мое решение, которое возвращает только 1 IP4-адрес:

try {
    Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
    while (interfaces.hasMoreElements()) {
        NetworkInterface iface = interfaces.nextElement();
        if (iface.isLoopback() || !iface.isUp() || iface.isVirtual() || iface.isPointToPoint())
            continue;

        Enumeration<InetAddress> addresses = iface.getInetAddresses();
        while(addresses.hasMoreElements()) {
            InetAddress addr = addresses.nextElement();

            final String ip = addr.getHostAddress();
            if(Inet4Address.class == addr.getClass()) return ip;
        }
    }
} catch (SocketException e) {
    throw new RuntimeException(e);
}
return null;
2
ответ дан 28 November 2019 в 04:18
поделиться

Вам нужно получить jar-файл jsoup здесь , добавить jar-файл jsoup в ваш java-проект и интерпретировать эти строки кода, и вы получите свой IP-адрес,

Document doc = Jsoup.connect("https://whatismyipaddress.com/").timeout(10000).get() ;
Elements el = doc.select("div#section_left") ;
Element e = el.select("a").get(
System.out.println(e.text());
1
ответ дан 28 November 2019 в 04:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: