• ベストアンサー

JavaでMACアドレスを取得して加工したい!

JavaでMACアドレスを取得して加工したい! 見出しの通りなのですが JavaでMACアドレスを取得して それをString型の配列に代入して色々加工したいのですが なかなか上手くいきません。 取得して代入からうまくいってません・・・ 初心者なのでわかりやすく教えていただけるとありがたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • mintia007
  • ベストアンサー率59% (16/27)
回答No.4

import java.net.NetworkInterface; import java.util.Enumeration; public class GetMacAdr{ public static void main(String args[]) throws Exception{ String nicaddr = ""; // このマシン上のネットワークインタフェースをnicに格納 Enumeration<NetworkInterface> nic = NetworkInterface.getNetworkInterfaces(); while( nic.hasMoreElements() ) { NetworkInterface n = nic.nextElement(); //インタフェース名を表示 System.out.print( n.getName() + " : " ); //MACアドレスをbyte[]で取得 byte[] addressByte = n.getHardwareAddress(); // 取得したMACアドレスをStringへ変換 if( addressByte != null ){ for( byte b : addressByte ){ nicaddr = nicaddr + String.format( "%02X", b); } } // Stringクラスのnicaddrを表示 System.out.println( nicaddr ); nicaddr = ""; } } } API見て分かるように、JDK6でないと出来ません。更にLinuxならroot権限で実行する必要あります。 あと、これは自PCのMACアドレスに対してですよ。他のPCのMACアドレス取得はできません。他のPCのMACアドレスを取得したい場合、jpcapを使う手があります。

hotwater69
質問者

お礼

自PCのMACアドレスをちょっと論理演算したりしたかったのです! ありがとうございます。

その他の回答 (3)

回答No.3
hotwater69
質問者

補足

import java.net.NetworkInterface; import java.util.Enumeration; public class Macget{ public static void main(String args[]) throws Exception{ String nicaddr = "0"; // このマシン上のネットワークインタフェースをnicに格納 Enumeration<NetworkInterface> nic = NetworkInterface.getNetworkInterfaces(); while( nic.hasMoreElements() ) { NetworkInterface n = nic.nextElement(); //インタフェース名を表示 System.out.print( n.getName() + " : " ); //MACアドレスをbyte[]で取得 byte[] addressByte = n.getHardwareAddress(); //以下,整形と表示処理 if( addressByte != null ){ int bytenum = addressByte.length; for(int i=0; i<bytenum; i++){ String printAddress; int addressInt = 0x0FF & addressByte[i]; if( addressInt < 10 ){ printAddress = "0" + Integer.toString(addressInt); }else{ printAddress = Integer.toHexString(addressInt); } nicaddr = "0" + Integer.toString(addressInt); System.out.print( printAddress); } } System.out.println(); } } } こういうサンプルがあったので参考にしているんですが ここで出したMACアドレスをString型などの変数に 入れて生きたいのですが可能ですかね?

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.2

JavaにはMACアドレスを取得するAPIはないわ。 外部コマンドの力を借りないとダメ。 http://www.hellohiro.com/command.htm この辺を参考にするといいわ。

hotwater69
質問者

補足

外部コマンドですか・・・ リナックスで使おうと思ってるんですが 使えるんですかね?

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

取得はできたのね? 取得できてしまえばあとは文字列の加工だけだと思うけど。 うまくいかないとはどううまくいかないのかしら。

hotwater69
質問者

補足

わかりづらくてすいません・・・ 取得も出来ていないんです。 その後String型に代入したいのです! お解りならば教えてください。