Я пытаюсь получить свой 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-адрес он ожидает от других устройств для подключения.
URL url = new URL("http://checkip.amazonaws.com/");
BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
System.out.println(br.readLine());
РЕДАКТИРОВАТЬ
Перед тем, как понизить голосование, я хорошо знаю, что это не решение Java. Это общее решение для любого языка программирования. Другие решения не работают для меня так же хорошо. Также я считаю, что самый простой способ узнать ваш IP - это зайти в Интернет. Это может быть любой сайт, сервер может вернуть ваш клиентский ip, который он получил в запросе. Вы можете настроить свою собственную конечную точку для этого.
Мое решение, которое возвращает только 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;
Вам нужно получить 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());