colonizercao 发表于 2013-2-7 09:09:51

获取个系统的MAC地址

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");// 寻找标示字符串                   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");// 寻找标示字符串                   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);         }       }   }
页: [1]
查看完整版本: 获取个系统的MAC地址