1

これまでのところ、私は常に以下を使用して IP アドレスを取得しました。

InetAddress.getLocalHost().getHostAddress()

上記の方法は Windows で機能しますが、Linux では常に127.0.1.1IP アドレスとして取得します。

私は何を間違っていますか?

4

2 に答える 2

4

あなたの問題を解決するはずのコードをインターネットで見つけました:

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 アドレスがチェックされることです。

于 2012-08-24T08:08:12.410 に答える
0

アプリケーションはセキュリティ マネージャを使用していますか? getLocalHost は、アドレスに接続できない場合、ループバック アドレスを返します。

于 2012-08-24T08:16:28.887 に答える