通过java获取mac地址

Posted on

通过java获取mac地址 - Terry.B.Li 彬 - BlogJava

Terry.B.Li 彬

虚其心,可解天下之问;专其心,可治天下之学;静其心,可悟天下之理;恒其心,可成天下之业。

BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合 :: 管理 :: 140 随笔 :: 314 文章 :: 90 评论 :: 0 Trackbacks

<2012年11月>日一二三四五六2829303112345678910111213141516171819202122232425262728293012345678

*

常用链接

留言簿(8)

随笔分类(107)

随笔档案(139)

文章分类(255)

文章档案(312)

相册

收藏夹(56)

家装

最新随笔

搜索

*

积分与排名

  • 积分 - 230113
  • 排名 - 98

最新评论

阅读排行榜

评论排行榜

* 通过java获取mac地址

package com.juziku.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  第一个命令 
  /*  @param  another 第二个命令 
  /*  @return    第二个命令的执行结果 
   /*/   
  public   static  String callCmd(String[] cmd,String[] another) {  
     String result  =   "" ;  
     String line  =   "" ;  
      try  {  
         Runtime rt  =  Runtime.getRuntime();  
         Process proc  =  rt.exec(cmd);  
         proc.waitFor();   // 已经执行完第一个命令,准备执行第二个命令  
         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  目标ip,一般在局域网内 
  /*  @param  sourceString 命令处理的结果字符串 
  /*  @param  macSeparator mac分隔符号 
  /*  @return   mac地址,用上面的分隔符号表示 
   /*/   
  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 ;   // 如果有多个IP,只匹配本IP对应的Mac.  
         }  
     }

      return  result;  
 }



  //*/*  
  /* 
  /*  @param  ip 目标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 目标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 " ));
 }

}通过java获取mac地址,下面是完整的代码: posted on 2011-06-02 23:52 礼物 阅读(825) 评论(0) 编辑 收藏

新用户注册 刷新评论列表

SpringOne 开发者大会(北京,12月7日-8日,免费) 博客园 博问 IT新闻 Java程序员招聘 标题 请输入标题 姓名 请输入你的姓名 主页 请输入验证码 验证码 /* 内容(请不要发表任何与政治相关的内容) 请输入评论内容 Remember Me? 登录 [使用Ctrl+Enter键可以直接提交] IT新闻: · 百度收购今晚看啥团队 加强视频搜索个性化 · 土卫三红外图像似有趣“吃豆人” · 夏普首款5寸1080p手机港行今日发布 · 手机巨头大会战:Lumia 920搏杀iPhone及Galaxy · 永远的颠覆者——奇虎360董事长周鸿祎专访

博客园首页随笔: · win8应用商店安装路径 · 分享ISTQB培训体验 · Javascript知识分享,不是闭包这回事。 · [Silverlight]MVVM+MEF框架Jounce学习(2):标记和绑定 · “图灵原创”教你如何用C语言给情书加密——关于《C程序设计伴侣》10.3.1、10.3.2 知识库: · 走出浮躁的泥沼 · HTTP服务七层架构技术探讨 · HTTP协议之基本认证 · 17家中国初创公司的失败史 · 高斯模糊的算法 网站导航:

博客园 IT新闻 知识库 C++博客 程序员招聘 管理

Powered by: BlogJava Copyright © 礼物

希望本站内容对您有点用处,有什么疑问或建议请在后面留言评论
转载请注明作者(RobinChia)和出处 It so life ,请勿用于任何商业用途