- - PR -
通信先MACアドレスの取得
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-09-09 10:40
いつもお世話になっております。
ネットワーク通信を行う場合、 java.net.Socket#getInetAddress() を使うことで、通信先のIPアドレスを取得することができます。 これと同様に 通信先のMACアドレスも取得したいと思っていますが、 javaでそのようなことは可能でしょうか。 ※JDKのバージョンは問いません。 どなたか何かご存知の方いらっしゃいましたら 教えてください。 よろしくお願いします。 |
|
投稿日時: 2008-09-09 11:59
つ MACアドレス取得方法
|
|
投稿日時: 2008-09-09 13:01
>ACさん
早速の返信ありがとうございます。 残念ながら、ご提示いただいたスレッドはすでに読みました。 これって、自分のMACアドレス取得方法ですよね。 私が知りたいのは、 プログラムが動いているマシン(サーバ)のMACアドレスではなく、 プログラムが通信している通信先マシン(クライアント)のMACアドレスなのです。 |
|
投稿日時: 2008-09-09 13:46
あなたの 携帯電話の MAC アドレスは わかりますか
-- OSの仮想化で多数の仮想マシンを接続する 仮想ネットワークにも 仮想のMACアドレスがあります。 [ メッセージ編集済み 編集者: MMX 編集日時 2008-09-09 13:58 ] |
|
投稿日時: 2008-09-09 14:55
MACアドレスをもたないノードとの通信もありえますよ、、
イーサネット上で同じIPネットワークセグメントならarpコマンドでとれますね、 (イーサネット上の隣接するノード間通信といいましょうか) javaでとるなら、いくつか工夫が必要でしょう。 相手のMACアドレスを知りたい理由はなんですか? どういった環境を想定してますか? |
|
投稿日時: 2008-09-09 14:59
ARPコマンドの結果を解析するか、
JNIでARPコマンドと同じようなことをするプログラムを作るかになると思います。 クライアントがWEBシステムではなく、自前のJavaの通信プログラムであるならば、 クライアント自身が自分のMACアドレスを取得してサーバへ送ればよいでしょう。 |
|
投稿日時: 2008-09-09 17:51
つ Jpcap
|
|
投稿日時: 2008-10-01 22:51
みなさん、ありがとうございます。
PureJavaでIPアドレスを取得するように 簡単にはできない、ということがわかりました。 MACアドレスをもたないノードとの通信もありえるんですね。 勉強になります。 背景としては、クライアントに手を加えられない状況で クライアントを識別したい状況がありました。 IPアドレスだとDHCPの環境では対応できません。 MACアドレスであれば通信機器毎に固定値なので それをIPアドレスのように手軽に取得できれば 問題が解決できるなぁ、と思った次第です。 (もちろん、MACアドレスは簡単に偽装できますが、 そういう悪意あるケースは今回考えない、としました。) いろいろ調べていただき、 教えていただいてありがとうございました。 とても参考になりました。 |
1