- PR -

通信先MACアドレスの取得

1
投稿者投稿内容
84
ベテラン
会議室デビュー日: 2005/11/04
投稿数: 83
投稿日時: 2008-09-09 10:40
いつもお世話になっております。

ネットワーク通信を行う場合、
java.net.Socket#getInetAddress()
を使うことで、通信先のIPアドレスを取得することができます。

これと同様に
通信先のMACアドレスも取得したいと思っていますが、
javaでそのようなことは可能でしょうか。

※JDKのバージョンは問いません。

どなたか何かご存知の方いらっしゃいましたら
教えてください。
よろしくお願いします。
AC
会議室デビュー日: 2004/04/15
投稿数: 18
投稿日時: 2008-09-09 11:59
MACアドレス取得方法
84
ベテラン
会議室デビュー日: 2005/11/04
投稿数: 83
投稿日時: 2008-09-09 13:01
>ACさん

早速の返信ありがとうございます。
残念ながら、ご提示いただいたスレッドはすでに読みました。

これって、自分のMACアドレス取得方法ですよね。

私が知りたいのは、
プログラムが動いているマシン(サーバ)のMACアドレスではなく、
プログラムが通信している通信先マシン(クライアント)のMACアドレスなのです。
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2008-09-09 13:46
あなたの 携帯電話の MAC アドレスは わかりますか
--
OSの仮想化で多数の仮想マシンを接続する 仮想ネットワークにも 仮想のMACアドレスがあります。

[ メッセージ編集済み 編集者: MMX 編集日時 2008-09-09 13:58 ]
progman
大ベテラン
会議室デビュー日: 2005/06/08
投稿数: 227
投稿日時: 2008-09-09 14:55
MACアドレスをもたないノードとの通信もありえますよ、、
イーサネット上で同じIPネットワークセグメントならarpコマンドでとれますね、
(イーサネット上の隣接するノード間通信といいましょうか)
javaでとるなら、いくつか工夫が必要でしょう。

相手のMACアドレスを知りたい理由はなんですか?
どういった環境を想定してますか?

かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2008-09-09 14:59
ARPコマンドの結果を解析するか、
JNIでARPコマンドと同じようなことをするプログラムを作るかになると思います。

クライアントがWEBシステムではなく、自前のJavaの通信プログラムであるならば、
クライアント自身が自分のMACアドレスを取得してサーバへ送ればよいでしょう。
AC
会議室デビュー日: 2004/04/15
投稿数: 18
投稿日時: 2008-09-09 17:51
Jpcap
84
ベテラン
会議室デビュー日: 2005/11/04
投稿数: 83
投稿日時: 2008-10-01 22:51
みなさん、ありがとうございます。

PureJavaでIPアドレスを取得するように
簡単にはできない、ということがわかりました。

MACアドレスをもたないノードとの通信もありえるんですね。
勉強になります。

背景としては、クライアントに手を加えられない状況で
クライアントを識別したい状況がありました。
IPアドレスだとDHCPの環境では対応できません。
MACアドレスであれば通信機器毎に固定値なので
それをIPアドレスのように手軽に取得できれば
問題が解決できるなぁ、と思った次第です。
(もちろん、MACアドレスは簡単に偽装できますが、
そういう悪意あるケースは今回考えない、としました。)

いろいろ調べていただき、
教えていただいてありがとうございました。
とても参考になりました。
1

スキルアップ/キャリアアップ(JOB@IT)