Получение 'внешнего' IP-адреса в Java

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

Мой после класса IPAddress только получает локальный IP-адрес машины.

public class IPAddress {

    private InetAddress thisIp;

    private String thisIpAddress;

    private void setIpAdd() {
        try {
            InetAddress thisIp = InetAddress.getLocalHost();
            thisIpAddress = thisIp.getHostAddress().toString();
        } catch (Exception e) {
        }
    }

    protected String getIpAddress() {
        setIpAdd();
        return thisIpAddress;
    }
}
81
задан maytham-ɯɐɥʇʎɐɯ 23 January 2016 в 12:36
поделиться

4 ответа

Я не уверен, что вы можете получить этот IP из кода, который работает на локальной машине.

Однако вы можете создать код, выполняемый на сайте, скажем, в JSP, и затем использовать что-то, что возвращает IP того места, откуда пришел запрос:

request.getRemoteAddr()

Или просто использовать уже существующие сервисы, которые делают это, затем разобрать ответ от сервиса, чтобы узнать IP.

Используйте веб-сервисы, такие как AWS и другие

import java.net.*;
import java.io.*;

URL whatismyip = new URL("http://checkip.amazonaws.com");
BufferedReader in = new BufferedReader(new InputStreamReader(
                whatismyip.openStream()));

String ip = in.readLine(); //you get the IP as a String
System.out.println(ip);
161
ответ дан 24 November 2019 в 09:24
поделиться

Правда в том, что "вы не можете" в том смысле, в котором вы задали вопрос. NAT происходит вне протокола. Ядро вашей машины не может знать, как ваш блок NAT сопоставляет внешние и внутренние IP-адреса. В других ответах здесь предлагаются трюки, связанные с методами общения с внешними веб-сайтами.

17
ответ дан 24 November 2019 в 09:24
поделиться

Установите HttpURLConnection на какой-нибудь сайт, например www.whatismyip.com, и проанализируйте его: -)

5
ответ дан 24 November 2019 в 09:24
поделиться

Это не так просто, поскольку машина внутри локальной сети обычно не заботится о внешнем IP-адресе своего маршрутизатора, подключенного к Интернету ... ей это просто не нужно!

Я бы посоветовал вам воспользоваться этим, открыв сайт вроде http://www.whatismyip.com/ и получив IP-адрес путем анализа результатов html .. это не должно быть так сложно !

1
ответ дан 24 November 2019 в 09:24
поделиться
Другие вопросы по тегам:

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