JavaアプレットからローカルIPアドレスを特定したいと思います。問題は、LANとインターネット接続 (palm、VMWare ...)を持つ同じマシンに複数のIPアドレスがある場合です。Javaアプレットから正しいローカルIPアドレスを取得
public static void main(String[] args) {
try {
String hostName = InetAddress.getLocalHost().getHostName();
System.out.println("HostName = " + hostName);
System.out.println("HostAddressLocal = " +
InetAddress.getLocalHost().getHostAddress());
InetAddress[] inetAddresses = InetAddress.getAllByName(hostName);
for (InetAddress inetAddress : inetAddresses) {
System.out.println("hostAddress = " + inetAddress.getHostAddress());
}
} catch (Exception e) {
e.printStackTrace();
}
}
結果は次のとおりです:
は、ここに私のテストです
HostName = xxxx
HostAddressLocal = xx.xx.xx.xx
hostAddress = 10.10.11.51
hostAddress = 192.168.23.1
hostAddress = 192.168.106.1
XX.XX.XX.XXが正しいアドレスではありません。正しいのは10.10.11.51です。 jarnbjoに応じて
EDIT:
あなたの水晶玉は真実を言います。あなたは私の問題を理解している。クライアントはプロキシ経由で接続できるため、最初の点は使用できません。私は自分のコンピュータ上で以下のコードを実行する場合:GETHOSTNAMEの底に
Internet IP = /127.0.0.1
そしてない10.10.11.51
アプレットですか?メインとローカルのUPアドレスにアクセスできますか? –
私たちもその問題を抱えていました。 – KLE
あなたは正確に何をしようとしていますか?なぜこの情報が必要ですか?ユーザーがローカルアドレスを持っていない場合はどうなりますか?ユーザーが多くのインターフェイスと多くのローカルアドレスを持っている場合はどうなりますか?ユーザーがIPv6を持っている場合(各インターフェイスに潜在的に多くのアドレスがある可能性があります)あなたのプログラムにはいくつかの設計上の問題があります。正しく動作するためにはこの特性に決して頼るべきではありません。 – Juliano