InetAddress.getLocalHost是否提供Windows和Linux系统的IP地址?

时间:2017-02-13 12:39:40

标签: java network-programming

我在我的程序中使用InetAddress.getLocalHost(),可以部署在Windows和Linux服务器上。它是否在两种环境中都提供ip地址?

1 个答案:

答案 0 :(得分:1)

该方法在所有平台上提供IP地址。但是,它可能无法提供您期望的IP地址。

javadoc说:

  

返回本地主机的地址。这是通过从系统中检索主机名,然后将该名称解析为InetAddress来实现的。

     

如果有安全管理器,则使用本地主机名调用其checkConnect方法,并将-1作为其参数,以查看是否允许该操作。如果不允许该操作,则返回表示环回地址的InetAddress。

在各种情况下,给出应用程序的IP不是您想要或需要的IP地址:

  • 如果应用程序是沙盒,则IP将为127.0.0.1
  • 如果本地DNS配置为返回127.0.0.1主机名称,那么您将获得该名称。 (我看到系统配置错误。)
  • 如果系统有多个NIC,则DNS查找可能会为您提供未公开NIC的IP。
  • 如果系统实际上是虚拟机,则系统看到的IP可能与暴露给外部的IP不同。
  • 如果系统的IP处于私有IP范围内,那么它将无法“公开”寻址。