Домой Учебники по Java и J2EE Как получить IP-адрес сервера и имя хоста в Java

Как получить IP-адрес сервера и имя хоста в Java

2093
0

В Java вы можете использовать InetAddress.getLocalHost() получить IP-адрес текущего Сервера, на котором выполняется приложение Java, и InetAddress.getHostName() получить имя хоста текущего имени сервера.

CrunchifyGetIPHostname.java

Джава
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
пакет ком . crunchify. учебные пособия ;
Импортировать Java. нетто. InetAddress ;
Импортировать Java. нетто. UnknownHostException ;
/ **
* @author Crunchify.com
* /
общественности учебный класс CrunchifyGetIPHostname {
     общественности статический недействительным main ( Строка [ ] аргументы ) {
         InetAddress ip ;
         строка имя хоста ;
         пытаться {
             IP знак равно InetAddress . getLocalHost ( ) ;
             имя хоста знак равно ф. getHostName ( ) ;
             Система. вне. println ( «Ваш текущий IP-адрес:» + ip ) ;
             Система. вне. println ( Ваше текущее имя хоста: + имя хоста ) ;
         } ловить ( UnknownHostException е ) {
             эл . printStackTrace ( ) ;
         }
     }
}

Выход:

1
2
Ваш текущий IP- адрес : appshahmac / 192.168.0.1
Ваше текущее имя хоста : аппшахмакинтош

Другой должен прочитать:

На первый взгляд, InetAddress.getLocalHost() должен дать вам IP-адрес этого хоста. Проблема в том, что хост может иметь множество сетевых интерфейсов, и интерфейс может быть связан с несколькими IP-адресами. Кроме того, не все IP-адреса будут доступны с компьютера. Некоторые могут быть виртуальными устройствами, а другие могут быть IP-адресами частной сети.

ЧИТАТЬ ТАКЖЕ:  Какая разница между броском против бросает в Java

Это означает, что IP-адрес возвращается InetAddress.getLocalHost() не может быть правильным для использования.

Как вы можете справиться с этим?

  • Одним из подходов является использование Java NetworkInterface.getNetworkInterfaces() API для получения всех известных сетевых интерфейсов на хосте, а затем итерации по адресам каждого NI.
  • Другой подход заключается в том, чтобы (каким-то образом) получить внешне объявленное полное доменное имя хоста и использовать InetAddress.getByName() искать первичный IP-адрес. (Но как вы это получаете, и как вы справляетесь с балансировщиком нагрузки на основе DNS ?)
  • Разновидностью предыдущего является получение предпочтительного полного доменного имени из файла конфигурации или параметра командной строки.
  • Другой вариант — получить IP-адрес из файла конфигурации или параметра командной строки.

В итоге, InetAddress.getLocalHost() будет обычно работать, но вам может потребоваться предоставить альтернативный метод для случаев, когда ваш код выполняется в среде со «сложной» сетью.

Как получить IP-адрес сервера и имя хоста в Java

0.00 (0%) 0 votes

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь