获取主机的相关信息

Java  获取主机的MAC地址

获取MAC地址首先要理解当前的操作系统,由于在不同的操作系统中CMD命令所在的位置不同,因此首先使用System类中的getProperty("os.name")方法获取当前的操作系统,getProperty()方法可以确定当前系统属性,它的参数是一些固定的键值。

 

相关值的描述
java.versionJava 运行时环境版本
java.vendorJava 运行时环境供应商
java.vendor.urlJava 供应商的 URL
java.homeJava 安装目录
java.vm.specification.versionJava 虚拟机规范版本
java.vm.specification.vendorJava 虚拟机规范供应商
java.vm.specification.nameJava 虚拟机规范名称
java.vm.versionJava 虚拟机实现版本
java.vm.vendorJava 虚拟机实现供应商
java.vm.nameJava 虚拟机实现名称
java.specification.versionJava 运行时环境规范版本
java.specification.vendorJava 运行时环境规范供应商
java.specification.nameJava 运行时环境规范名称
java.class.versionJava 类格式版本号
java.class.pathJava 类路径
java.library.path加载库时搜索的路径列表
java.io.tmpdir默认的临时文件路径
java.compiler要使用的 JIT 编译器的名称
java.ext.dirs一个或多个扩展目录的路径
os.name操作系统的名称
os.arch操作系统的架构
os.version操作系统的版本
file.separator文件分隔符(在 UNIX 系统中是“/”)
path.separator路径分隔符(在 UNIX 系统中是“:”)
line.separator行分隔符(在 UNIX 系统中是“/n”)
user.name用户的账户名称
user.home用户的主目录
user.dir用户的当前工作目录

 

    在确认了CMD命令的位置之后,使用Runtime类中的exec()方法来执行指定的DOS命令,经放置在InputStream对象中,遍历结果中的每一行,获取带有“Phusical Address”字样的行,将后面的MAC地址返回就可以了。

    总结一下,获取计算机MAC地址的总体思路:1.获取当前的操作系统 2.找到当前系统下CMD命令的位置 3.用exec()方法执行指定的DOS命令 4.遍历结果的每一行,获取自己需要的信息。下面是详细的代码:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;


public class GetMAC {
 //声明一个空的构造方法
 public GetMAC(){}
 //获取计算机MAC地址的方法
 public String getMAC(){
  String macAddress=null;
  //获取操作系统的名称
  String osName=System.getProperty("os.name");
  System.out.println("操作系统为:"+osName);
  //声明获取cmd路径的对象并实例化
  StringBuffer systemPathBuff=new StringBuffer("");
  if(osName.indexOf("Windows")>-1){
   //Windows操作系统的cmd.exe的绝对路径
   //append方法:将指定的字符串追加到此字符序列
   systemPathBuff.append("c:\\WINDOWS\\system32\\cmd.exe");
   //System.out.println("cmd.exe的决定路径:"+systemPathBuff.toString());
  }
  if(osName.indexOf("NT")>-1){
   //NT操作系统的cmd.exe的绝对路径
   systemPathBuff.append("c:\\WINDOWS\\command.com");
  }
  //Process 类提供了执行从进程输入、执行输出到进程、
  //等待进程完成、检查进程的退出状态以及销毁(杀掉)进程的方法
  Process pro=null;
  try{
   //功能:相当于在cmd下面执行dir命令,并得到命令执行完毕后的输出流
   pro=Runtime.getRuntime().exec(systemPathBuff.toString()+" /c dir ");
   InputStream getMsg=pro.getInputStream();
   BufferedReader br=new BufferedReader(new InputStreamReader(getMsg));
   //读取第一行
   String message=br.readLine();
  // String serNuResult=null;
   int index=-1;
   //读取下一行
   message=br.readLine();
   //功能:相当于在cmd下执行ipconfig/all命令,并得到命令执行完毕后的输出流
   pro=Runtime.getRuntime().exec(systemPathBuff.toString()+" /c ipconfig/all");//必须在/c的前面

//加空格
   getMsg=pro.getInputStream();
   br=new BufferedReader(new InputStreamReader(getMsg));
   //读取第一行
   message=br.readLine();
   while(message!=null){
    if((index=message.indexOf("Physical Address"))>0){
     macAddress=message.substring(index+36).trim();
     break;
    }
    //读取下一行
    message=br.readLine();
   }
  }catch(IOException e){
   e.printStackTrace();
  }
  return macAddress;
 }
 public static void main(String[] args){
  GetMAC macAdd=new GetMAC();
  String macAddress=macAdd.getMAC();
  System.out.println("这台主机的MAC地址为:"+macAddress);
  
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值