【问题标题】:Java find whether two server are running in same machineJava查找两台服务器是否在同一台机器上运行
【发布时间】:2013-02-14 20:30:06
【问题描述】:

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

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

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

【问题讨论】:

    标签: java ip hostname inet


    【解决方案1】:

    您可以将所有内容都转换为 IP 地址,并且由于我们知道它们是独一无二的,因此可以将它们一起比较。

    看看这篇文章。

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

    【讨论】:

      【解决方案2】:
      • 获取主机名的 IP 地址。 [使用:InetAddress::getByName()]
      • 获取您已获得的 IP 的网络接口。 [使用:NetworkInterface::getByInetAddress()]
      • 获取网络接口的 MAC 地址 [使用:NetworkInterface::getHardwareAddress()]
      • 如果两台服务器生成的 MAC 地址重叠,则它们在同一台机器上运行。

      【讨论】:

        【解决方案3】:

        对两个主机名进行 NSlookup。比较结果。

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-10-26
          • 1970-01-01
          • 1970-01-01
          • 2017-01-29
          • 1970-01-01
          • 1970-01-01
          • 2019-02-22
          • 1970-01-01
          相关资源
          最近更新 更多