【问题标题】:IP Address in Java on LinuxLinux 上 Java 中的 IP 地址
【发布时间】:2012-08-19 18:44:26
【问题描述】:

到目前为止,我一直使用以下方法来获取我的 IP 地址:

InetAddress.getLocalHost().getHostAddress()

上述方法适用于 Windows,但在 linux 上,我总是将127.0.1.1 作为我的 IP 地址。

我做错了什么?

【问题讨论】:

标签: java windows linux ip-address inetaddress


【解决方案1】:

我在网上找到了一些可以解决你问题的代码:

String hostName = InetAddress.getLocalHost().getHostName();

InetAddress addrs[] = InetAddress.getAllByName(hostName);

String myIp = "UNKNOWN";
for (InetAddress addr: addrs) {
  System.out.println ("addr.getHostAddress() = " + addr.getHostAddress());
  System.out.println ("addr.getHostName() = " + addr.getHostName());
  System.out.println ("addr.isAnyLocalAddress() = " + addr.isAnyLocalAddress());
  System.out.println ("addr.isLinkLocalAddress() = " + addr.isLinkLocalAddress());
  System.out.println ("addr.isLoopbackAddress() = " + addr.isLoopbackAddress());
  System.out.println ("addr.isMulticastAddress() = " + addr.isMulticastAddress());
  System.out.println ("addr.isSiteLocalAddress() = " + addr.isSiteLocalAddress());
  System.out.println ("");

  if (!addr.isLoopbackAddress() && addr.isSiteLocalAddress()) {
    myIp = addr.getHostAddress();
  }
}

来源:http://www.exampledepot.com/egs/java.net/Local.html

与您的代码的基本区别在于检查了所有 IP 地址。

【讨论】:

    【解决方案2】:

    您的应用程序是否使用安全管理器?如果 getLocalHost 无法连接到您的地址,它将返回环回地址。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-17
      • 1970-01-01
      • 1970-01-01
      • 2011-01-18
      • 1970-01-01
      • 2014-01-08
      • 2021-10-01
      • 1970-01-01
      相关资源
      最近更新 更多