java怎樣獲得本地MAC地址

public class UserMac {
    /** 
     * 獲取當前操作系統名稱. 
     * return 操作系統名稱 例如:windows xp,linux 等. 
     */ 
    public static String getOSName() {  
        return System.getProperty("os.name").toLowerCase();  
    }  
   
   
    /** 
     * 獲取unix網卡的mac地址. 
     * 非windows的系統默認調用本方法獲取.如果有特殊系統請繼續擴充新的取mac地址方法. 
     * @return mac地址 
     */ 
    public static String getUnixMACAddress() {  
        String mac = null;  
        BufferedReader bufferedReader = null;  
        Process process = null;  
        try {  
            process = Runtime.getRuntime().exec("ifconfig eth0");// linux下的命令,一般取eth0作爲本地主網卡 顯示信息中包含有mac地址信息  
            bufferedReader = new BufferedReader(new InputStreamReader(process  
                    .getInputStream()));  
            String line = null;  
            int index = -1;  
            while ((line = bufferedReader.readLine()) != null) {  
                index = line.toLowerCase().indexOf("hwaddr");// 尋找標示字符串[hwaddr]  
                if (index >= 0) {// 找到了  
                    mac = line.substring(index +"hwaddr".length()+ 1).trim();//  取出mac地址並去除2邊空格  
                    break;  
                }  
            }  
        } catch (IOException e) {  
            e.printStackTrace();  
        } finally {  
            try {  
                if (bufferedReader != null) {  
                    bufferedReader.close();  
                }  
            } catch (IOException e1) {  
                e1.printStackTrace();  
            }  
            bufferedReader = null;  
            process = null;  
        }  
 
        return mac;  
    }  
   
    /** 
     * 獲取widnows網卡的mac地址. 
     * @return mac地址 
     */ 
    public static String getWindowsMACAddress() {  
        String mac = null;  
        BufferedReader bufferedReader = null;  
        Process process = null;  
        try {  
            process = Runtime.getRuntime().exec("ipconfig /all");// windows下的命令,顯示信息中包含有mac地址信息  
            bufferedReader = new BufferedReader(new InputStreamReader(process  
                    .getInputStream()));  
            String line = null;  
            int index = -1;  
            while ((line = bufferedReader.readLine()) != null) {  
                index = line.toLowerCase().indexOf("physical address");// 尋找標示字符串[physical address]  
                if (index >= 0) {// 找到了  
                    index = line.indexOf(":");// 尋找":"的位置  
                    if (index>=0) {  
                        mac = line.substring(index + 1).trim();//  取出mac地址並去除2邊空格  
                    }  
                    break;  
                }  
            }  
        } catch (IOException e) {  
            e.printStackTrace();  
        } finally {  
            try {  
                if (bufferedReader != null) {  
                    bufferedReader.close();  
                }  
            } catch (IOException e1) {  
                e1.printStackTrace();  
            }  
            bufferedReader = null;  
            process = null;  
        }  
 
        return mac;  
    }  
 

 //獲得本機MAC信息
 public static String getUserMac(){
    String os = getOSName();
        if(os.startsWith("windows")){  
           //本地是windows  
          return  getWindowsMACAddress();  
        }else{  
             //本地是非windows系統 一般就是unix  
       return  getUnixMACAddress();  
        }  
 }

 public static void main(String args[]){
  System.out.println(getUserMac());
 }
}

發佈了36 篇原創文章 · 獲贊 29 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章