2016-07-28 79 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

如果您關心兼容性,請確定Windows上不存在「HOSTNAME」。但主要問題是:你爲什麼需要它?一臺機器可以託管多個域名,那麼你需要什麼名稱? – Andreas

+0

不只是Windows,但不能保證它會在Linux上設置。首先,它不是POSIX必需的環境變量,有些發行版可能會選擇不使用它或停止使用它。其次,根據進程的啓動方式,它不一定會向前導出所有環境變量。 – Pace

回答

0

在大多數系統中,它們應該返回相同的值。但是,System.getenv()依賴於系統的環境變量。

0

System.getenv("HOSTNAME")對你來說是最好的選擇,因爲這會給你預期的確切值,因爲它來自環境變量。

InetAddress.getLocalHost().getHostName()它會給出可以在許多不同的主機名下知道的主機名。 閱讀全文 Recommended way to get hostname in Java