Java 如果主机名为“0”,那么创建HostAndPort实例的最简单方法是什么;localhost";?

Java 如果主机名为“0”,那么创建HostAndPort实例的最简单方法是什么;localhost";?,java,guava,Java,Guava,我想使用guava中的类来存储主机和端口。如果主机是“localhost”而不是“127.0.0.1”,那么创建有效的HostAndPort-实例的最简单方法是什么 在我创建HostAndPort-实例之前,它试图验证主机,但对于“localhost”,它返回false。因此,在我的例子中,除了将“localhost”转换为“127.0.0.1”之外,我不能使用主机说明符。 是否有其他方法可以在不进行DNS查找的情况下验证主机名?java.net.InetAddress。getByName(字符

我想使用guava中的类来存储主机和端口。如果主机是“localhost”而不是“127.0.0.1”,那么创建有效的
HostAndPort
-实例的最简单方法是什么

在我创建
HostAndPort
-实例之前,它试图验证主机,但对于“localhost”,它返回
false
。因此,在我的例子中,除了将“localhost”转换为“127.0.0.1”之外,我不能使用主机说明符。
是否有其他方法可以在不进行DNS查找的情况下验证主机名?

java.net.InetAddress。getByName(字符串主机名)
就是其中之一

本地地址查找是通过windows上的lmhosts(如果启用)和linux/unix上的名称服务开关配置(
/etc/nsswitch.conf
)来完成的,以便检查首先在哪里查找文件、dns、nis。。。。等等(
mannsswitch.conf
)。java api调用将根据系统配置解决此问题

编辑:

你可能也想看看这个图书馆



希望这有点帮助

本地系统中有一个hosts文件,您可以在其中设置名称/ip解析器。您的localhost将解析为127.0.0.1,除非您在hosts文件中用其他内容覆盖它。您的意思是“127.0.0.1”不一定是“localhost”吗?是否有一些API可以处理这种情况?是的。看看我的答案。您可以在Windows中编辑C:\Windows\System32\drivers\etc\hosts来自己尝试,并将任何ip分配给本地主机,尝试ping它,看看如果启用了lmhosts查找(通常默认情况下是这样),将如何解决该问题。