Java查找两台服务器是否在同一台机器上运行

问题描述:

我必须查找两台服务器是否在同一台主机上运行。Java查找两台服务器是否在同一台机器上运行

我有两个主机,但我无法比较它们,因为一个可以有一个IP地址,另一个可能有主机名。当我挖得更远时,我发现可以有任意数量的主机名别名。那么如何才能找出两个主机别名(哪一个可以是IP)对应相同的主机或不同的主机?

我们可以使用java.net.InetAddress.getLocalHost().getHostName();找到主机名,但我不确定如何找到两个主机名是否指向同一主机?

您可以将所有内容都转换为IP地址,并且由于我们知道这些内容是唯一的,因此可以将这些内容进行比较。

看看这篇文章。

http://www.java2s.com/Code/Java/Network-Protocol/ConvertahostnametotheequivalentIPaddress.htm

  • 获取主机名的IP地址(ES)。 [使用:InetAddress::getByName()]
  • 获取您拥有的IP的网络接口。 [用途:NetworkInterface::getByInetAddress()]
  • 找网络接口(一个或多个)MAC地址(ES)[用途:NetworkInterface::getHardwareAddress()]
  • 如果有两个服务器生成的MAC地址的重叠,他们在同一台机器上运行。

做一个NSlookup的两个主机名称。比较结果。

您可以使用InetAddress.getHostAddress()来执行查找。

请注意,主机名可能位于负载均衡器或其他类型的代理之后,因此没有可靠的方法来测试它们是否实际上“在相同(物理)机器上运行”。