2014-04-11 77 views
1

Java正在給127.0.0.1作爲IP爲InetAddress.getByName( 「localhost」 的)。getHostAddress() 但爲什麼沒有java的賦予 「本地主機」 爲InetAddress.getByName(「127.0 .0.1" )的gethostname。對於後面的一個,我得到「127.0.0.1」作爲主機名。請澄清這一點。「本地主機」 與127.0.0.1的Java

+6

它返回底層DNS系統返回的任何內容,並且沒有反向映射。 –

回答

2

InetAddress.getByName(String) Javadoc中說明

主機名可以是一臺機器的名稱,如「java.sun.com」,或 其IP地址的文本表示。 如果提供的文字IP地址是 ,則只檢查地址格式的有效性。

因此,它實際上並沒有去你的hosts文件(或DNS)的IP地址。它只會創建一個InetAddress對象,其中包含您提供的String創建的主機名和地址。

爲了您的第一個例子

InetAddress.getByName("localhost").getHostAddress() 

假設你有一個像

127.0.0.1 localhost 

一個hosts文件條目,則返回的InetAddress對象將有一個信息,即。主機名稱爲localhost,地址爲127.0.0.1

同樣,如果你有

1.2.3.4 this.is.a.name 

InetAddress localhost = InetAddress.getByName("this.is.a.name"); 

返回InetAddress將與this.is.a.name主機名和1.2.3.4地址構造,因爲它實際上去檢查過了。

+0

謝謝你的明確解釋,現在我得到了IP /主機名如何映射。 – Razz

相關問題