Полностью определенное имя компьютера 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 есть запись, она будет захватывать первое имя_хоста (не псевдоним)

Другие вопросы по тегам