我必须找出两台服务器是否在同一主机上运行。
我有两台主机,但我无法比较它们,因为一台可以有 IP 地址,另一台可以有主机名。当我进一步挖掘时,我发现主机名可以有任意数量的别名。那么如何确定两个主机别名(其中一个可以是 IP)对应于同一主机或不同主机?
我们可以使用找到主机名,java.net.InetAddress.getLocalHost().getHostName();
但我不确定如何查找两个主机名是否指向同一主机?
您可以将所有内容都转换为 IP 地址,并且由于我们知道它们是独一无二的,因此可以将它们进行比较。
看看这篇文章。
http://www.java2s.com/Code/Java/Network-Protocol/ConvertahostnametotheequivalentIPaddress.htm
InetAddress::getByName()
]NetworkInterface::getByInetAddress()
]NetworkInterface::getHardwareAddress()
]对两个主机名进行 NSlookup。比较结果。
您可以使用 InetAddress.getHostAddress() 来执行查找。
请注意,主机名可能位于负载均衡器或其他类型的代理之后,因此没有可靠的方法来测试它们是否真的“在同一台(物理)机器上运行”。