2016-07-28 10 views
0

Я отвечал на вопрос о проблеме, которая касается InetAddress в Java 8: InetAddress java 8 is not getting the hostnameкоторый лучше между получением имени хоста с использованием InetAddress или System.getenv

однако я нашел простое решение, используя System.getenv("HOSTNAME") вместо InetAddress.getLocalHost().getHostName() ...

Я хочу знать, в чем разница между получением имени хоста с помощью:

InetAddress.getLocalHost().getHostName(); 

или

System.getenv("HOSTNAME") 

и есть ли какие-либо удары? что лучше?

+0

Вы, вероятно, не следует полагаться на переменные окружения системы –

+1

Если вы заботитесь о совместимости, знайте, что 'HOSTNAME' не существует на Windows. Но главный вопрос: зачем вам это нужно? На машине может размещаться много доменов, так зачем вам это имя? – Andreas

+0

Не просто Windows, но нет гарантии, что он будет установлен на Linux. Во-первых, это не требуемая переменная среды POSIX, и некоторые дистрибутивы могут не использовать ее или прекратить ее использовать. Во-вторых, в зависимости от того, как запускается процесс, необязательно, чтобы все переменные среды экспортировались вперед. – Pace

ответ

0

В большинстве систем они должны возвращать одинаковое значение. Однако System.getenv() опирается на переменные среды системы.

0

System.getenv("HOSTNAME") является лучшим для вас, потому что это даст точное значение, которое вы ожидали, поскольку оно исходит из переменной среды.

InetAddress.getLocalHost().getHostName() Он даст имя хоста, которое может быть известно под разными именами хостов. Подробнее Recommended way to get hostname in Java