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

时间:2013-02-14 09:23:44

标签: java ip hostname inet

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

我有两个主机,但我无法比较它们,因为一个可以有一个IP地址而另一个可能有一个主机名。当我进一步挖掘时,我发现主机名可以有任意数量的别名。那么如何判断两个主机别名(一个可以是IP)是对应同一个主机还是不同主机?

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

3 个答案:

答案 0 :(得分:1)

您可以将所有内容转换为IP地址,因为我们知道它们是唯一的,所以将它们进行比较。

看一下这篇文章。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

执行两个主机名的NSlookup。比较结果。

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

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