- ベストアンサー
JavaでMACアドレスを取得して加工したい!
JavaでMACアドレスを取得して加工したい! 見出しの通りなのですが JavaでMACアドレスを取得して それをString型の配列に代入して色々加工したいのですが なかなか上手くいきません。 取得して代入からうまくいってません・・・ 初心者なのでわかりやすく教えていただけるとありがたいです。
- みんなの回答 (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を使う手があります。
その他の回答 (3)
- himajin100000
- ベストアンサー率54% (1660/3060)
>取得するAPIはない よっこらせっと http://java.sun.com/javase/6/docs/api/java/net/NetworkInterface.html#getNetworkInterfaces%28%29 http://java.sun.com/javase/6/docs/api/java/net/NetworkInterface.html#getHardwareAddress%28%29
補足
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)
JavaにはMACアドレスを取得するAPIはないわ。 外部コマンドの力を借りないとダメ。 http://www.hellohiro.com/command.htm この辺を参考にするといいわ。
補足
外部コマンドですか・・・ リナックスで使おうと思ってるんですが 使えるんですかね?
- askaaska
- ベストアンサー率35% (1455/4149)
取得はできたのね? 取得できてしまえばあとは文字列の加工だけだと思うけど。 うまくいかないとはどううまくいかないのかしら。
補足
わかりづらくてすいません・・・ 取得も出来ていないんです。 その後String型に代入したいのです! お解りならば教えてください。
お礼
自PCのMACアドレスをちょっと論理演算したりしたかったのです! ありがとうございます。