2008-08-29 22 views
24

特定のウェブサイトにアクセスするために使用されるネットワークインターフェイスのイーサネットアドレスを取得したいと考えています。Javaを使用してイーサネットアドレスを取得するにはどうすればよいですか?

これはどのようにJavaで実行できますか? confing | getHardwareAddressの受け入れソリューションはさておき、私(P F)を実行してから、Java 5のためのソリューションがあるようには思えないのJava 6でのみ利用可能であること

ソリューション注意。

答えて

17

java.net.NetworkInterface.getHardwareAddressそれはあなたが興味のあるマシン上で呼び出す必要があり

(メソッドは、Java 6で追加) - MACは、ネットワーク境界(すなわち、LANおよびWAN)経由で転送されていません。クライアントに問い合わせるためにウェブサイトサーバー上でそれを利用したい場合は、結果を返すアプレットを実行する必要があります。

Java 5以前では、コードparsing output of command line tools on various systemsが見つかりました。

+0

は、私は「ネットワークの境界を越えて」*よりも正しいと思います(libpcapの/ WinPcapのを必要とします)ネットワークセグメント "* – m0skit0

3

あなたはあなたのクライアントがNATを経由して接続している場合、あなたは、ルータとNOTイーサネットアドレスのアドレスを取得しますがhttp://java.sun.com/javase/6/docs/api/java/net/NetworkInterface.html#getInetAddresses()

を使用してのServerSocketに接続するアドレスを取得することができます。それがローカルネットワーク上にある場合(ハブ/スイッチ経由で、NATを備えたルータはありません)、意図したとおりに動作します。

2

実際には、他の正しい回答(JDK 6; exec 'ifconfig')を超えて、JNIベースのライブラリがあります。 Java Uuid Generator (JUG) 2.0にはいくつかのプラットフォーム用のコードがあります。これは、JDK 1.2上で動作し、少なくとも(でも多分1.1)上

関連する問題