您的位置:首页 > 编程语言 > Java开发

java怎样获得本地MAC地址

2012-11-12 16:02 190 查看
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());

 }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: