Java を使用してイーサネット アドレスを取得するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/33960

  •  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が必要)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top