2015-08-03 1 views
0

Я пытаюсь отобразить и сохранить общедоступный IP-адрес системы. Для этого я использовал следующий код. т.е. я импортировал следующие два заявления:Как отображать и сохранять общедоступный IP-адрес системы в Java

import java.net.InetAddress; 
import java.net.UnknownHostException; 

    try { 
     InetAddress iAddress = InetAddress.getLocalHost();    
     String currentIp = iAddress.getHostAddress(); 
     System.out.println("Current System's IP address is : " +currentIp); 
     } catch (UnknownHostException e) { 
       System.out.println("Catch block executed. So IP address is not displayed"); 
      } 

Он отображает выход как:

"Current System's IP address is : 192.168.1.5" 

Но публичный IP-адрес моей системы (как проверено в https://www.whatismyip.com/) является:

115.107.244.81 

Итак, как мне отобразить и отобразить общедоступный IP-адрес из файла .JAVA?

+1

Смотрите это: http://stackoverflow.com/questions/2381316/java-inetaddress-getlocalhost-returns-127-0-0-1-how-to-get-real-ip – PaulF

+1

HTTP: //stackoverflow.com/a/12107979/1225526 – Karthigeyan

+0

Я не думаю, что вам нужна первая ссылка Павла, которая, хотя и правильная, предназначена для самостоятельного приложения. При взгляде на комментарии кажется, что вы хотите, чтобы IP-клиенты в веб-приложении следуют http://stackoverflow.com/questions/12107739/how-to-determine-by-what-ip-address-my-website- был доступен/12107979 # 12107979 и не волнуйтесь, если он показывает адрес 192.xx во время тестирования. На реальном интернет-адресе IP-адрес клиента будет корректным, чтобы проверить, как разместить свой код на сервере и получить доступ к общедоступному IP/url этого сервера. – tgkprog

ответ

1

https://www.whatismyip.com -> который отобразит публичный IP-адрес, который будет известен внешнему миру. Если вы перезагрузите свою систему, вы можете увидеть другой IP-адрес. Несмотря на то, что если у вас статический IP-адрес, веб-сайт не будет показывать ваш IP-адрес устройства.

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

+0

Привет, Шрирам, на самом деле я использую Play Framework. Для этого я использую «активатор-1.3.2», который использует сервер JBoss-netty (номер порта по умолчанию: 9000). В этом проекте, когда конечный пользователь регистрируется на моем веб-сайте, я хочу сохранить IP-адрес пользователя в своей таблице. Так как я должен пойти на это ...? – Mants

-1
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes(); 
      HttpServletRequest servletRequest = attributes.getRequest(); 
      ipAddress = String.valueOf(servletRequest.getSession().getAttribute("clientAddress")); 
+0

Полностью неправ от начала до конца. Нет ничего в вопросе о сервлетах; этот код не дает собственный общедоступный IP-адрес хоста; и в спецификации Servlet нет ничего, что говорит о том, что сеанс сервлета будет содержать запись с именем «clientAddress». – EJP

0

если ваши используют сеть из локальной сети, то она всегда начинается с 192. то ..

Попробуй соединиться с другим видом подключения к сети они будут показывать общественности ф адрес. Команда для получения IP-адреса - это ipconfig в командной строке в Windows.

+0

Неправильно. Не всегда: только если сеть соответствует директивам IANA, и если сеть использует 16-битное имя блока, а затем в этом случае ваш ответ является неполным, так как имя '192.168.xxx.yyy', а не' 192.xxx.yyy .zzz'. См. [Частная сеть в Википедии] (https://en.wikipedia.org/wiki/Private_network). –

Смежные вопросы