Java を使用してイーサネット アドレスを取得するにはどうすればよいですか?
-
09-06-2019 - |
質問
特定の Web サイトにアクセスするために使用されるネットワーク インターフェイスのイーサネット アドレスを取得したいと考えています。
これを Java でどのように実行できるでしょうか?
解決 の受け入れられた解決策に注意してください getHardwareAddress
Java 6 でのみ利用可能です。i(f|p)confing を実行する以外に Java 5 の解決策はないようです。
解決
java.net.NetworkInterface.getHardwareAddress (Java 6で追加されたメソッド)
関心のあるマシン上で呼び出す必要があります。MAC はネットワーク境界を越えて転送されません (つまり、MAC はネットワーク境界を越えて転送されません)。LAN と WAN)。これを Web サイト サーバー上で利用してクライアントに問い合わせたい場合は、結果を報告するアプレットを実行する必要があります。
Java 5 以前のコードを見つけました さまざまなシステム上のコマンド ライン ツールの出力を解析する.
他のヒント
次を使用して、ServerSocket に接続するアドレスを取得できます。 http://java.sun.com/javase/6/docs/api/java/net/NetworkInterface.html#getInetAddresses()
ただし、クライアントが NAT 経由で接続している場合は、イーサネット アドレスではなくルーターのアドレスを取得します。ローカル ネットワーク上にある場合 (ハブ/スイッチ経由、NAT を備えたルーターなし)、意図したとおりに動作します。
実際、他の正解を超えています (JDK 6;exec 'ifconfig')、JNI ベースのライブラリがあります。 Java UUID ジェネレーター (JUG) 2.0 一部のプラットフォーム用のコードが含まれています。これは少なくとも JDK 1.2 以降 (おそらく 1.1 でも) で動作します。
ZXnet を使用できます。 https://github.com/ardikars/Jxnet (libpcap/winpcapが必要)