JAVA获取MAC地址的方法

来源:互联网 发布:淘宝客户信誉度怎么看 编辑:程序博客网 时间:2024/06/07 07:11
  1. import java.io.BufferedReader;   
  2. import java.io.IOException;   
  3. import java.io.InputStreamReader;   
  4.   
  5. /**  
  6.  * 获取MAC地址  
  7.  * @author sunlightcs  
  8.  *  
  9.  */  
  10. public class GetMacAddress {   
  11.   
  12.       /**   
  13.        *  获取当前操作系统名称.   
  14.        *  return 操作系统名称 例如:windows,Linux,Unix等.  
  15.       */     
  16.      public static String getOSName() {     
  17.          return System.getProperty("os.name").toLowerCase();     
  18.      }     
  19.               
  20.      /**   
  21.        * 获取Unix网卡的mac地址.   
  22.       * @return mac地址   
  23.       */     
  24.      public static String getUnixMACAddress() {     
  25.          String mac = null;     
  26.          BufferedReader bufferedReader = null;     
  27.          Process process = null;     
  28.          try {     
  29.                /**  
  30.                 *  Unix下的命令,一般取eth0作为本地主网卡 显示信息中包含有mac地址信息   
  31.                 */  
  32.              process = Runtime.getRuntime().exec("ifconfig eth0");   
  33.              bufferedReader = new BufferedReader(new InputStreamReader(process     
  34.                      .getInputStream()));     
  35.              String line = null;     
  36.              int index = -1;     
  37.              while ((line = bufferedReader.readLine()) != null) {     
  38.                     /**  
  39.                      *  寻找标示字符串[hwaddr]  
  40.                      */  
  41.                  index = line.toLowerCase().indexOf("hwaddr");    
  42.                     /**  
  43.                      * 找到了  
  44.                      */  
  45.                  if (index != -1) {     
  46.                         /**  
  47.                          *   取出mac地址并去除2边空格   
  48.                          */  
  49.                      mac = line.substring(index +"hwaddr".length()+ 1).trim();   
  50.                      break;     
  51.                  }     
  52.              }     
  53.          } catch (IOException e) {     
  54.              e.printStackTrace();     
  55.          } finally {     
  56.              try {     
  57.                  if (bufferedReader != null) {     
  58.                      bufferedReader.close();     
  59.                  }     
  60.              } catch (IOException e1) {     
  61.                 e1.printStackTrace();     
  62.             }     
  63.              bufferedReader = null;     
  64.              process = null;     
  65.          }     
  66.       
  67.          return mac;     
  68.      }     
  69.           
  70.             
  71.             
  72.          /**   
  73.            * 获取Linux网卡的mac地址.   
  74.           * @return mac地址   
  75.           */     
  76.          public static String getLinuxMACAddress() {     
  77.              String mac = null;     
  78.              BufferedReader bufferedReader = null;     
  79.              Process process = null;     
  80.              try {     
  81.                    /**  
  82.                     *  linux下的命令,一般取eth0作为本地主网卡 显示信息中包含有mac地址信息   
  83.                     */  
  84.                  process = Runtime.getRuntime().exec("ifconfig eth0");   
  85.                  bufferedReader = new BufferedReader(new InputStreamReader(process     
  86.                          .getInputStream()));     
  87.                  String line = null;     
  88.                  int index = -1;     
  89.                  while ((line = bufferedReader.readLine()) != null) {     
  90.                      index = line.toLowerCase().indexOf("硬件地址");    
  91.                         /**  
  92.                          * 找到了  
  93.                          */  
  94.                      if (index != -1) {     
  95.                             /** 
  96.                              *   取出mac地址并去除2边空格   
  97.                              */  
  98.                          mac = line.substring(index+4).trim();   
  99.                          break;     
  100.                      }     
  101.                  }     
  102.              } catch (IOException e) {     
  103.                  e.printStackTrace();     
  104.              } finally {     
  105.                  try {     
  106.                      if (bufferedReader != null) {     
  107.                          bufferedReader.close();     
  108.                      }     
  109.                  } catch (IOException e1) {     
  110.                     e1.printStackTrace();     
  111.                 }     
  112.                  bufferedReader = null;     
  113.                  process = null;     
  114.              }   
  115.           
  116.              return mac;     
  117.          }   
  118.             
  119.          /**   
  120.           * 获取widnows网卡的mac地址.   
  121.           * @return mac地址   
  122.           */     
  123.          public static String getWindowsMACAddress() {     
  124.              String mac = null;     
  125.              BufferedReader bufferedReader = null;     
  126.              Process process = null;     
  127.              try {     
  128.                    /**  
  129.                     * windows下的命令,显示信息中包含有mac地址信息   
  130.                     */  
  131.                  process = Runtime.getRuntime().exec("ipconfig /all");   
  132.                  bufferedReader = new BufferedReader(new InputStreamReader(process     
  133.                          .getInputStream()));     
  134.                  String line = null;     
  135.                  int index = -1;     
  136.                  while ((line = bufferedReader.readLine()) != null) {     
  137.                         /**  
  138.                          *  寻找标示字符串[physical address]  
  139.                          */  
  140.                      index = line.toLowerCase().indexOf("physical address");    
  141.                      if (index != -1) {   
  142.                          index = line.indexOf(":");   
  143.                          if (index != -1) {   
  144.                                 /** 
  145.                                  *   取出mac地址并去除2边空格 
  146.                                  */  
  147.                             mac = line.substring(index + 1).trim();    
  148.                         }   
  149.                          break;     
  150.                      }   
  151.                  }   
  152.              } catch (IOException e) {     
  153.                  e.printStackTrace();     
  154.              }finally {     
  155.                  try {     
  156.                      if (bufferedReader != null) {     
  157.                          bufferedReader.close();     
  158.                        }     
  159.                  }catch (IOException e1) {     
  160.                      e1.printStackTrace();     
  161.                    }     
  162.                  bufferedReader = null;     
  163.                  process = null;     
  164.              }     
  165.           
  166.              return mac;     
  167.          }     
  168.           
  169.          /**   
  170.           * 测试用的main方法.   
  171.           *    
  172.           * @param argc   
  173.          *            运行参数.   
  174.           */     
  175.          public static void main(String[] argc) {     
  176.              String os = getOSName();     
  177.              System.out.println(os);     
  178.              if(os.startsWith("windows")){     
  179.                  String mac = getWindowsMACAddress();     
  180.                  System.out.println("本地是windows:"+mac);     
  181.              }else if(os.startsWith("linux")){     
  182.                    String mac = getLinuxMACAddress();     
  183.                  System.out.println("本地是Linux系统,MAC地址是:"+mac);   
  184.              }else{     
  185.                  String mac = getUnixMACAddress();                         
  186.                  System.out.println("本地是Unix系统 MAC地址是:"+mac);   
  187.              }     
  188.          }     
  189.   
  190. }  
0 0
原创粉丝点击