科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道用纯JAVA语言编程读取MAC地址的实现

用纯JAVA语言编程读取MAC地址的实现

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文介绍如何在WindowXP/NT/2000环境中,编写纯Java程序,执行外部命令IPCONFIG,并通过分析该命令的输入流而获得本机的MAC地址的编程方法。

作者:魏勇 来源:计算机与信息技术 2007年10月13日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共3页)

执行一个有标准输出的DOS命令,程序执行完后往往不会自动关闭,从而导致Java应用程序阻塞在waitfor( )。导致该现象的原因可能是该命令的输出比较多,而运行窗口的输出缓冲区不够大。解决的办法是,利用Java的Process类提供的方法让Java虚拟机截获DOS运行的标准输出,在waitfor()命令之前读出该缓冲区的内容。以运行命令dir为例,典型的程序如下:

以下是引用片段:
 :
  String line;
  Process process = Runtime.getRuntime().exec("cmd /c dir");
  BufferedReader bufferedReader = new BufferedReader ( new InputStreamReader(process.getInputStream()));
  while ( (line = bufferedReader.readLine()) != -1) System. out.println(line);
  process.waitFor( );
  :3 Process

  Runtime.exec方法创建一个本机进程,并返回 Process 子类的一个实例,该实例可用来控制进程并获取相关信息。

  抽象类Process封装了一个进程(process),一个正在执行的程序。它主要被当作由Runtime类中的exec( )方法所创建的对象的类型的超类。在抽象类Process中,主要包含了如下一些抽象方法。

  InputStream getInputStream( ):返回一个从进程的out输出流中读输入的输入流。

  OutputStream getOutputStream( ):返回一个从进程的in输入流中写输出的输出流。

  int waitFor( ) throws InterruptedException:返回由进程返回的退出码。这个方法直到调用它的进程中止,才会返回。

  4 程序编写

  我们先来分析ipconfig/all的输出格式:

  图1
点击放大此图片

  从图1中我们看到MAC地址包含的行为:“ Physical Address. . . . . . . . . : 00-10-DC-A9-0B-2C”。为了找到MAC地址,我们一行一行读取字符,只要找到字符串“ Physical Address. . . . . . . . . :”,就可以找到MAC地址了。下面是实现的程序片段:

以下是引用片段:

  Process process = Runtime.getRuntime().exec("cmd /c ipconfig /all");
  BufferedReader bufferedReader =
  new BufferedReader(new InputStreamReader (process.getInputStream()));
  while ( (line=bufferedReader.readLine()) != null){
  if(line.indexOf("Physical Address. . . . . . . . . :") != -1){
  if(line.indexOf(":") != -1){
  physicalAddress = line.substring(line.indexOf(":")+2);

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章