午后星期午

          通過java獲取mac地址

          package  cc.wshao.util;

          import  java.io.BufferedReader;
          import  java.io.InputStreamReader;
          import  java.util.regex.Matcher;
          import  java.util.regex.Pattern;

          public   class  GetMacAddress {
               
               
          public   static  String callCmd(String[] cmd) {  
                   String result 
          =   "" ;  
                   String line 
          =   "" ;  
                   
          try  {  
                       Process proc 
          =  Runtime.getRuntime().exec(cmd);  
                       InputStreamReader is 
          =   new  InputStreamReader(proc.getInputStream());  
                       BufferedReader br 
          =   new  BufferedReader (is);  
                       
          while  ((line  =  br.readLine ())  !=   null ) {  
                       result 
          +=  line;  
                       }  
                   }  
                   
          catch (Exception e) {  
                       e.printStackTrace();  
                   }  
                   
          return  result;  
               }
               
               
               
               
               
          /**  
                * 
                * 
          @param  cmd  第一個(gè)命令 
                * 
          @param  another 第二個(gè)命令 
                * 
          @return    第二個(gè)命令的執(zhí)行結(jié)果 
                
          */   
               
          public   static  String callCmd(String[] cmd,String[] another) {  
                   String result 
          =   "" ;  
                   String line 
          =   "" ;  
                   
          try  {  
                       Runtime rt 
          =  Runtime.getRuntime();  
                       Process proc 
          =  rt.exec(cmd);  
                       proc.waitFor();  
          // 已經(jīng)執(zhí)行完第一個(gè)命令,準(zhǔn)備執(zhí)行第二個(gè)命令  
                       proc  =  rt.exec(another);  
                       InputStreamReader is 
          =   new  InputStreamReader(proc.getInputStream());  
                       BufferedReader br 
          =   new  BufferedReader (is);  
                       
          while  ((line  =  br.readLine ())  !=   null ) {  
                           result 
          +=  line;  
                       }  
                   }  
                   
          catch (Exception e) {  
                       e.printStackTrace();  
                   }  
                   
          return  result;  
               }
               
               
               
               
          /**  
                * 
                * 
          @param  ip  目標(biāo)ip,一般在局域網(wǎng)內(nèi) 
                * 
          @param  sourceString 命令處理的結(jié)果字符串 
                * 
          @param  macSeparator mac分隔符號(hào) 
                * 
          @return   mac地址,用上面的分隔符號(hào)表示 
                
          */   
               
          public   static  String filterMacAddress( final  String ip,  final  String sourceString, final  String macSeparator) {  
                   String result 
          =   "" ;  
                   String regExp 
          =   " ((([0-9,A-F,a-f]{1,2} "   +  macSeparator  +   " ){1,5})[0-9,A-F,a-f]{1,2}) " ;  
                   Pattern pattern 
          =  Pattern.compile(regExp);  
                   Matcher matcher 
          =  pattern.matcher(sourceString);  
                   
          while (matcher.find()){  
                       result 
          =  matcher.group( 1 );  
                       
          if (sourceString.indexOf(ip)  <=  sourceString.lastIndexOf(matcher.group( 1 ))) {  
                           
          break ;   // 如果有多個(gè)IP,只匹配本IP對應(yīng)的Mac.  
                       }  
                   }
             
                   
          return  result;  
               }
               
               
               
               
          /**  
                * 
                * 
          @param  ip 目標(biāo)ip 
                * 
          @return    Mac Address 
                * 
                
          */   
               
          public   static  String getMacInWindows( final  String ip){  
                   String result 
          =   "" ;  
                   String[] cmd 
          =  {  
                           
          " cmd " ,  
                           
          " /c " ,  
                           
          " ping  "   +   ip  
                           };  
                   String[] another 
          =  {  
                           
          " cmd " ,  
                           
          " /c " ,  
                           
          " arp -a "   
                           };  
             
                   String cmdResult 
          =  callCmd(cmd,another);  
                   result 
          =  filterMacAddress(ip,cmdResult, " - " );  
             
                   
          return  result;  
               }  
             
             
               
          /**  
               * 
               * 
          @param  ip 目標(biāo)ip 
               * 
          @return    Mac Address 
               * 
               
          */   
               
          public   static  String getMacInLinux( final  String ip){  
                   String result 
          =   "" ;  
                   String[] cmd 
          =  {  
                           
          " /bin/sh " ,  
                           
          " -c " ,  
                           
          " ping  "   +   ip  +   "  -c 2 && arp -a "   
                           };  
                   String cmdResult 
          =  callCmd(cmd);  
                   result 
          =  filterMacAddress(ip,cmdResult, " : " );  
             
                   
          return  result;  
               }  
               
               
          /**
                * 獲取MAC地址 
                * 
          @return  返回MAC地址
                
          */
               
          public   static  String getMacAddress(String ip){
                   String macAddress 
          =   "" ;
                   macAddress 
          =  getMacInWindows(ip).trim();
                   
          if (macAddress == null || "" .equals(macAddress)){
                       macAddress 
          =  getMacInLinux(ip).trim();
                   }
                   
          return  macAddress;
               }
             
               
          /**  
               * 測試 
               
          */   
               
          public   static   void  main(String[] args) {           
                   System.out.println(getMacAddress(
          " 192.168.10.203 " ));
               }
               

          }

          posted on 2013-12-31 13:58 午后星期午 閱讀(127) 評論(0)  編輯  收藏 所屬分類: Java

          主站蜘蛛池模板: 新昌县| 旌德县| 桃江县| 双江| 阳泉市| 新沂市| 道孚县| 丹阳市| 田阳县| 武邑县| 招远市| 罗甸县| 银川市| 延寿县| 金坛市| 晋城| 应用必备| 德惠市| 保德县| 肇州县| 家居| 雷波县| 桂平市| 义马市| 景谷| 阿坝县| 安溪县| 甘德县| 梧州市| 宣武区| 汉川市| 星座| 德清县| 张掖市| 石台县| 广东省| 横山县| 阳高县| 宿州市| 许昌县| 恭城|