InetAddress getLocalHost () не возвращает ожидаемый IP-адрес из C: \ WINDOWS \ system32 \ drivers \ etc \ hosts - PullRequest
4 голосов
/ 28 апреля 2011

В файле C: \ WINDOWS \ system32 \ drivers \ etc \ hosts У меня есть только следующая строка

192.168.0.23    computername.domain.com   computername

Когда я запускаю

InetAddress localhost = InetAddress.getLocalHost();
System.out.println("getLocalHost:" + localhost);

Я бы ожидал, что результат будет

getLocalHost:computername/192.168.0.23

, но он будет иметь вид

getLocalHost:computername/192.168.0.107

Любые идеи о том, почему это происходит?Должна ли конфигурация быть выполнена в каком-то другом файле (тоже)?

EDIT

InetAddress.getByName('computername')

выдает тот же IP, что и getLocalHost().

Ответы [ 2 ]

14 голосов
/ 28 апреля 2011

getLocalHost() возвращает фактический IP-адрес одного из ваших сетевых адаптеров.Если вы выполняете ipconfig в командной строке, один из ваших адаптеров должен возвращать один и тот же адрес.

Если у вас есть несколько адаптеров и вам нужен конкретный, вам нужно будет использовать NetworkInterface.getNetworkInterfaces(), а затем получить список InetAddressesс каждого интерфейса.

3 голосов
/ 28 апреля 2011

Почему записи из файла hosts влияют на IP-адрес для localhost?

InetAddress.getByName('computername') должен дать вам ожидаемый IP-адрес.

...