• Java获取本地MAC地址 (注意有的时候那个地址是英文或者中文的形式)


    package org.jivesoftware;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    import org.junit.Test;
    
    public class GetMACAddress {
    	
    	private String mac;
    	
    	/**   
         *  获取当前操作系统名称.   
         *  return 操作系统名称 例如:windows,Linux,Unix等.   
        */     
       public static String getOSName() {     
           return System.getProperty("os.name").toLowerCase();     
       }     
                
       /**   
         * 获取Unix网卡的mac地址.   
        * @return mac地址   
        */     
       public static String getUnixMACAddress() {     
           String mac = null;     
           BufferedReader bufferedReader = null;     
           Process process = null;     
           try {     
                 /**  
                  *  Unix下的命令,一般取eth0作为本地主网卡 显示信息中包含有mac地址信息    
                  */  
               process = Runtime.getRuntime().exec("ifconfig eth0");   
               bufferedReader = new BufferedReader(new InputStreamReader(process     
                       .getInputStream()));     
               String line = null;     
               int index = -1;     
               while ((line = bufferedReader.readLine()) != null) {     
                      /**  
                       *  寻找标示字符串[hwaddr]   
                       */  
                   index = line.toLowerCase().indexOf("hwaddr");    
                      /**  
                       * 找到了  
                       */  
                   if (index != -1) {     
                          /**  
                           *   取出mac地址并去除2边空格    
                           */  
                       mac = line.substring(index +"hwaddr".length()+ 1).trim();   
                       break;     
                   }     
               }     
           } catch (IOException e) {     
               e.printStackTrace();     
           } finally {     
               try {     
                   if (bufferedReader != null) {     
                       bufferedReader.close();     
                   }     
               } catch (IOException e1) {     
                  e1.printStackTrace();     
              }     
               bufferedReader = null;     
               process = null;     
           }     
        
           return mac;     
       }     
            
              
              
           /**   
             * 获取Linux网卡的mac地址.   
            * @return mac地址   
            */     
           public static String getLinuxMACAddress() {     
               String mac = null;     
               BufferedReader bufferedReader = null;     
               Process process = null;     
               try {     
                     /**  
                      *  linux下的命令,一般取eth0作为本地主网卡 显示信息中包含有mac地址信息    
                      */  
                   process = Runtime.getRuntime().exec("ifconfig eth0");   
                   bufferedReader = new BufferedReader(new InputStreamReader(process     
                           .getInputStream()));     
                   String line = null;     
                   int index = -1;     
                   while ((line = bufferedReader.readLine()) != null) {     
                       index = line.toLowerCase().indexOf("硬件地址");    
                          /**  
                           * 找到了  
                           */  
                       if (index != -1) {     
                              /**  
                               *   取出mac地址并去除2边空格    
                               */  
                           mac = line.substring(index+4).trim();   
                           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 {     
                     /**  
                      * windows下的命令,显示信息中包含有mac地址信息    
                      */  
                   process = Runtime.getRuntime().exec("ipconfig /all");   
                   bufferedReader = new BufferedReader(new InputStreamReader(process     
                           .getInputStream()));     
                   String line = null;     
                   int index_zh = -1;     
                   int index_en = -1;
                   while ((line = bufferedReader.readLine()) != null) {     
                          /**  
                           *  寻找标示字符串[physical address]  或  [物理地址] 是中文还是英文会因为操作系统不同而改变
                           */  
                       index_zh = line.toLowerCase().indexOf("物理地址");    
                       index_en = line.toLowerCase().indexOf("physical address");
                       
                       if (index_zh != -1) {   
                    	   index_zh = line.indexOf(":");   
                           if (index_zh != -1) {   
                                  /**  
                                   *   取出mac地址并去除2边空格  
                                   */  
                              mac = line.substring(index_zh + 1).trim();    
                          }   
                           break;     
                       }else if(index_en !=-1){
                    	   index_en = line.indexOf(":");   
                           if (index_en != -1) {   
                                  /**  
                                   *   取出mac地址并去除2边空格  
                                   */  
                              mac = line.substring(index_en + 1).trim();    
                          }   
                           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 String getMACAddress() {     
               String os = getOSName();     
               System.out.println(os); 
               String mac=null;
               if(os.startsWith("windows")){     
                    mac = getWindowsMACAddress();     
                   System.out.println("本地是windows:"+mac);     
               }else if(os.startsWith("linux")){     
                    mac = getLinuxMACAddress();     
                   System.out.println("本地是Linux系统,MAC地址是:"+mac);   
               }else{     
                    mac = getUnixMACAddress();                         
                   System.out.println("本地是Unix系统 MAC地址是:"+mac);   
               }   
               return mac;
           }     
    
    }
    
    I'm falling off the sky all alone.The courage inside is gonna break the fall. Nothing can dim my light within. I am That I am 程序 = 数据结构 + 算法
  • 相关阅读:
    archlinux 怎么样安装KDE界面
    选择Arch Linux还是Gentoo Linux?
    服务器用什么Linux系统较好?
    轻型简易的Linux桌面环境推荐
    扩大VMware虚拟机中linux硬盘空间
    archbang 硬盘安装
    持续改进中, Gnome Shell 2.91.3 发布
    群英战吕布 2010年十大Linux PK WIN7
    将LFSliveCD安装到硬盘的注意事项
    ArchLinux安装笔记(续)(桌面篇)
  • 原文地址:https://www.cnblogs.com/IamThat/p/2959067.html
Copyright © 2020-2023  润新知