Полностью определенное имя компьютера Java с /etc/hosts
Я пытаюсь получить полное имя моей машины (Windows 7 x64) в Java. На моей машине я обновил файл c:\Windows\system32\drivers\etc\hosts так, что в нем есть такая запись:
10.44.2.167 myserver myserver.domain.com
Все наши системы имеют запись в файле \ etc \ hosts (в вышеуказанном формате), которую я не могу изменить.
Следующий код всегда возвращает "myserver", и я так и не смог получить полное имя.
InetAddress addr = InetAddress.getLocalHost();
String fqName = addr.getCanonicalHostName();
Как мне добиться этого в Java?
Спасибо,
Shreyas
2 ответа
Быстрый и грязный способ сделать это:
try {
InetAddress addr = InetAddress.getLocalHost();
// Get IP Address
byte[] ipAddr = addr.getAddress();
// Get hostname
String hostname = addr.getHostName();
} catch (UnknownHostException e) {
}
Из 'man hosts ' /etc/hosts (или эквивалент windows) имеет следующий формат:
ip_address fully_qualified_name aliases
так что в вашем случае файл hosts будет выглядеть так:
10.44.2.167 myserver.domain.com myserver another_alias
Когда Java выполняет поиск хоста, если в / etc / hosts есть запись, она будет захватывать первое имя_хоста (не псевдоним)