获取本机正在使用的网卡的MAC地址

java的原生代码,通过java.net.NetworkInterface获取本机正在使用的网卡中的第一个,各平台通用,winows和SUSE Linux下测试正常(如果想获取所有的网卡MAC——通过isUp()方法来区分是否正在运作,或想获取所有正在使用的网卡的MAC,稍作改动即可)的MAC地址:

[java]  view plain copy
  1. import java.net.NetworkInterface;  
  2. import java.util.Enumeration;  
  3.   
  4. /** 
  5.  * 获取MAC地址工具类 
  6.  */  
  7. public class MacUtil {  
  8.     private MacUtil() {  
  9.     }  
  10.   
  11.     /** 
  12.      * 按照"XX-XX-XX-XX-XX-XX"格式,获取本机MAC地址 
  13.      * @return 
  14.      * @throws Exception 
  15.      */  
  16.     public static String getMacAddress() throws Exception{  
  17.         Enumeration ni = NetworkInterface.getNetworkInterfaces();  
  18.           
  19.         while(ni.hasMoreElements()){  
  20.             NetworkInterface netI = ni.nextElement();  
  21.               
  22.             byte[] bytes = netI.getHardwareAddress();  
  23.             if(netI.isUp() && netI != null && bytes != null && bytes.length == 6){  
  24.                 StringBuffer sb = new StringBuffer();  
  25.                 for(byte b:bytes){  
  26.                      //与11110000作按位与运算以便读取当前字节高4位  
  27.                      sb.append(Integer.toHexString((b&240)>>4));  
  28.                      //与00001111作按位与运算以便读取当前字节低4位  
  29.                      sb.append(Integer.toHexString(b&15));  
  30.                      sb.append("-");  
  31.                  }  
  32.                  sb.deleteCharAt(sb.length()-1);  
  33.                  return sb.toString().toUpperCase();   
  34.             }  
  35.         }  
  36.         return null;  
  37.     }  
  38.       
  39.       
  40.       
  41.     public static void main(String[] args) throws Exception{  
  42.         System.out.println(MacUtil.getMacAddress());  
  43.     }  
  44.       
  45. }  

你可能感兴趣的:(获取本机正在使用的网卡的MAC地址)