В нижней части getHostName () C функция gethostbyname (). Они сначала ищут / etc / hosts, затем пытаются разрешить через DNS. Таким образом, если вы добавите 10.10.11.51 myhostname в / etc / hosts, getHostName () должен правильно его определить
В Windows есть аналог / etc / hosts, AFAIR в \ WINDOWS \ System32 \ Servises или около того ...
Это ТОЛЬКО проблема разрешения имен.
В вашем коде вы сначала получаете имя хоста (hostName = InetAddress.getLocalHost (). GetHostName ();)
эта функция возвращает имя вашего компьютера, установленное при установке системы.
Затем вы получаете все IP конкретного имени хоста (InetAddress.getAllByName (hostName)) - это возвращает все IP, разрешенные для этого имени хоста
Простой пример
1 / etc / hosts, как это
127.0.0.1 localhost
127.0.1.1 fred-desktop
ваш код возврата
HostName = fred-desktop
HostAddressLocal = 127.0.1.1
hostAddress = 127.0.1.1
2 измените / etc / hosts на
127.0.0.1 localhost
127.0.1.1 fred-desktop
192.168.1.1 fred-desktop
20.20.20.20 fred-desktop
ваш код вернется
HostName = fred-desktop
HostAddressLocal = 127.0.1.1
hostAddress = 127.0.1.1
hostAddress = 192.168.1.1
hostAddress = 20.20.20.20
fred-desktop - имя моей коробки с Ubuntu.