В Java вы можете использовать InetAddress.getLocalHost() получить IP-адрес текущего Сервера, на котором выполняется приложение Java, и InetAddress.getHostName() получить имя хоста текущего имени сервера.
|
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- адрес : appshah — mac / 192.168.0.1
Ваше текущее имя хоста : аппшах — макинтош
|
Другой должен прочитать:
На первый взгляд, InetAddress.getLocalHost() должен дать вам IP-адрес этого хоста. Проблема в том, что хост может иметь множество сетевых интерфейсов, и интерфейс может быть связан с несколькими IP-адресами. Кроме того, не все IP-адреса будут доступны с компьютера. Некоторые могут быть виртуальными устройствами, а другие могут быть IP-адресами частной сети.
Это означает, что IP-адрес возвращается InetAddress.getLocalHost() не может быть правильным для использования.
Как вы можете справиться с этим?
- Одним из подходов является использование Java
NetworkInterface.getNetworkInterfaces()API для получения всех известных сетевых интерфейсов на хосте, а затем итерации по адресам каждого NI. - Другой подход заключается в том, чтобы (каким-то образом) получить внешне объявленное полное доменное имя хоста и использовать
InetAddress.getByName()искать первичный IP-адрес. (Но как вы это получаете, и как вы справляетесь с балансировщиком нагрузки на основе DNS ?) - Разновидностью предыдущего является получение предпочтительного полного доменного имени из файла конфигурации или параметра командной строки.
- Другой вариант — получить IP-адрес из файла конфигурации или параметра командной строки.
В итоге, InetAddress.getLocalHost() будет обычно работать, но вам может потребоваться предоставить альтернативный метод для случаев, когда ваш код выполняется в среде со «сложной» сетью.
0.00 (0%) 0 votes







