`
wangleifire
  • 浏览: 499982 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JDK6新特性,JAVA获得机器MAC地址的方法

    博客分类:
  • JAVA
阅读更多

这个代码包含了以前常见的用Runtime实现的方法,已经使用JDK1.6新特性实现的方法。

  1. import  java.io.BufferedReader;
  2. import  java.io.InputStreamReader;
  3. import  java.net.NetworkInterface;
  4. import  java.util.Enumeration;
  5. /**
  6.  * JDK6新特性,JAVA获得机器MAC地址的方法
  7.  *
  8.  * @author 老紫竹(Java世纪网,java2000.net)
  9.  */
  10. public   class  Test {
  11.    // 返回一个字节的十六进制字符串
  12.    static  String hexByte( byte  b) {
  13.     String s =  "000000"  + Integer.toHexString(b);
  14.      return  s.substring(s.length() -  2 );
  15.   }
  16.    public   static   void  main(String[] args)  throws  Exception {
  17.     System.out.println( "本机器的所有的网卡MAC发下:" );
  18.     getMacOnWindow();
  19.     getMac();
  20.   }
  21.    /**
  22.    * JDK1.6新特性获取网卡MAC地址
  23.    */
  24.   public   static   void  getMac() {
  25.      try  {
  26.       Enumeration<NetworkInterface> el = NetworkInterface.getNetworkInterfaces();
  27.        while  (el.hasMoreElements()) {
  28.          byte [] mac = el.nextElement().getHardwareAddress();
  29.          if  (mac ==  null )
  30.            continue ;
  31.         StringBuilder builder =  new  StringBuilder();
  32.          for  ( byte  b : mac) {
  33.           builder.append(hexByte(b));
  34.           builder.append( "-" );
  35.         }
  36.         builder.deleteCharAt(builder.length() -  1 );
  37.         System.out.println(builder);
  38.       }
  39.     }  catch  (Exception exception) {
  40.       exception.printStackTrace();
  41.     }
  42.   }
  43.    /**
  44.    * 原始的获取网卡MAC地址
  45.    */
  46.   public   static   void  getMacOnWindow() {
  47.      try  {
  48.       String mac =  null ;
  49.       Process process = Runtime.getRuntime().exec( "ipconfig /all" );
  50.       BufferedReader buffer =  new  BufferedReader( new  InputStreamReader(process.getInputStream()));
  51.        for  (String line = buffer.readLine(); line !=  null ; line = buffer.readLine()) {
  52.          int  index = line.indexOf( "Physical Address" );
  53.          if  (index <=  0 ) {
  54.            continue ;
  55.         }
  56.         mac = line.substring(index +  36 );
  57.          break ;
  58.       }
  59.       buffer.close();
  60.       process.waitFor();
  61.       System.out.println(mac);
  62.     }  catch  (Exception exception) {
  63.       exception.printStackTrace();
  64.     }
  65.   }
  66. }
分享到:
评论
1 楼 schoolar 2010-09-07  
非常不错,呵呵!

相关推荐

Global site tag (gtag.js) - Google Analytics