電子書籍の厳選無料作品が豊富!

JavaでMACアドレスを取得して加工したい!
見出しの通りなのですが
JavaでMACアドレスを取得して
それをString型の配列に代入して色々加工したいのですが
なかなか上手くいきません。

取得して代入からうまくいってません・・・

初心者なのでわかりやすく教えていただけるとありがたいです。

A 回答 (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を使う手があります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/05/07 17:17

この回答への補足

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型などの変数に
入れて生きたいのですが可能ですかね?

補足日時:2010/05/07 15:02
    • good
    • 0

JavaにはMACアドレスを取得するAPIはないわ。


外部コマンドの力を借りないとダメ。

http://www.hellohiro.com/command.htm
この辺を参考にするといいわ。

この回答への補足

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

補足日時:2010/05/07 15:00
    • good
    • 0

取得はできたのね?


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

この回答への補足

わかりづらくてすいません・・・

取得も出来ていないんです。
その後String型に代入したいのです!

お解りならば教えてください。

補足日時:2010/05/07 11:58
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!