Java为 InetAddress.getByName(“localhost”)提供127.0.0.1作为IP.getHostAddress() 但是为什么java没有为InetAddress.getByName(“127.0.0.1”)。getHostName提供“localhost”。对于后来的一个,我得到“127.0.0.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
构建,因为它实际上已经过检查。