六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 54|回复: 0

获取个系统的MAC地址

[复制链接]

升级  12.67%

17

主题

17

主题

17

主题

秀才

Rank: 2

积分
69
 楼主| 发表于 2013-1-15 01:54:57 | 显示全部楼层 |阅读模式
import java.io.BufferedReader;   import java.io.IOException;   import java.io.InputStreamReader;     /**   * 与系统相关的一些常用工具方法.   *    * */  public class SystemTool {         /**       * 获取当前操作系统名称.       * 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;       }         /**       * 测试用的main方法.       *        * @param argc       *            运行参数.       */      public static void main(String[] argc) {           String os = getOSName();           System.out.println(os);           if(os.startsWith("windows")){               //本地是windows               String mac = getWindowsMACAddress();               System.out.println(mac);           }else{               //本地是非windows系统 一般就是unix               String mac = getUnixMACAddress();               System.out.println(mac);           }       }   }
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表