2014-04-11 49 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

相关问题