5

java.net.InetAddress.getLocalHost().getHostAddress()ローカルIPアドレスを取得するために使用するライブラリを使用しています。ただし、これは常に私のコンピューター(Gentoo Linux、JDK 1.6.0_37)でIPv6アドレスを返します。このアドレスは、IPv6アドレスをサポートしていないために失敗するコンテキストで、さらに使用されます。

IPv4アドレスを強制的getHostAddress()に返す方法はありますか(たとえば、JVMへのパラメーターを介して)?

4

1 に答える 1

9

利用可能な場合は、IPv4 を使用するように設定できます。もちろん、IPv4 アドレスよりも多くの IPv6 アドレスが存在するため、常に IPv4 アドレスを取得できるとは限りません。

java.net.preferIPv4Stack = true

次のいずれかを設定します。

System.setProperty("java.net.preferIPv4Stack" , "true");

またはコマンドライン引数として:

-Djava.net.preferIPv4Stack=true

ただし、IPv4 アドレスの設定は一般的にデフォルトの動作です。

java.net.InetAddress.getLocalHost().getHostAddress()IPv6アドレスを絶対に取得しないようにする必要がある場合は、が返されないことを確認しInet6Address、返された場合は処理する必要があると思います(例外として)。

それか、もちろん、より良い方法: IPv6 をサポートするようにコードを修正します。

于 2013-01-11T16:57:04.573 に答える