前人未踏の領域へ Androidアプリ開発編

Androidアプリ開発に関する調査メモ置き場。古い記事にはアプリ以外も含まれます。

Macアドレスを取得せよ。

アクセスしてきた接続元のPCのMacアドレスを知るにはどうすればよいか。Javaには直接接続元のMacアドレスを取得するAPIはないようなので、OSのARPコマンドを利用してみる。ARPコマンドを実行すると以下のような結果が得られる。

C:\Documents and Settings\Administrator>arp -a 192.168.1.1

Interface: 192.168.1.1 on Interface 0x2
 Internet Address      Physical Address
 192.168.1.1           00-00-00-00-fe-ca

でこれをRuntime.exec()メソッドを使って実行する

 Process ps = Runtime.exec("arp -a 192.168.1.1");
 InputStream is = ps.getInputStream();
 //以後、BufferedReaderなどを使って出力結果を取得

で、MACアドレスの部分の文字列を取り出せば接続相手のMACアドレスは取得できる。問題は、接続元のIPアドレスが複数のPCで同一になる場合があるということだ。グローバルIPが1つの場合は実際の接続元が正しく取得できるかは非常に微妙なところなので、これは別な方法で解決する必要がある。