“localhost”vs 127.0.0.1 java

时间:2014-04-11 00:23:17

标签: java network-programming ip inetaddress

Java为 InetAddress.getByName(“localhost”)提供127.0.0.1作为IP.getHostAddress() 但是为什么java没有为InetAddress.getByName(“127.0.0.1”)。getHostName提供“localhost”。对于后来的一个,我得到“127.0.0.1”作为主机名。请澄清一下。

1 个答案:

答案 0 :(得分:2)

InetAddress.getByName(String)州的javadoc

  

主机名可以是机器名,例如“java.sun.com”,或   其IP地址的文本表示。 如果是文字IP地址   提供时,仅检查地址格式的有效性。

因此,它实际上并没有转到您的hosts文件(或DNS)中获取IP地址。它只是创建一个InetAddress对象,其中包含从您提供的String创建的主机名和地址。

第一个例子

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

假设您有一个hosts文件条目,如

127.0.0.1    localhost

然后返回的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构建,因为它实际上已经过检查。