java获取主机mac_Java 如何获取主机的MAC地址

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

java.version Java 运行时环境版本

java.vendor Java 运行时环境供应商

java.vendor.url Java 供应商的 URL

java.home Java 安装目录

java.vm.specification.version Java 虚拟机规范版本

java.vm.specification.vendor Java 虚拟机规范供应商

java.vm.specification.name Java 虚拟机规范名称

java.vm.version Java 虚拟机实现版本

java.vm.vendor Java 虚拟机实现供应商

java.vm.name Java 虚拟机实现名称

java.specification.version Java 运行时环境规范版本

java.specification.vendor Java 运行时环境规范供应商

java.specification.name Java 运行时环境规范名称

java.class.version Java 类格式版本号

java.class.path Java 类路径

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;

importjava.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);

} }

原文:http://www.blogjava.net/seoyouhua/archive/2014/10/30/419312.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
获取 MAC 地址是一个常见的需求,在 Java 中可以通过以下两种方式来获取: 1. 使用 NetworkInterface 类获取 MAC 地址。 ```java import java.net.*; import java.util.*; public class MacAddressUtil { public static String getMacAddress() throws Exception { InetAddress ip = InetAddress.getLocalHost(); NetworkInterface network = NetworkInterface.getByInetAddress(ip); byte[] mac = network.getHardwareAddress(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < mac.length; i++) { sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : "")); } return sb.toString(); } } ``` 2. 使用 Runtime 类执行命令获取 MAC 地址。 ```java import java.io.*; public class MacAddressUtil { public static String getMacAddress() throws Exception { Process process = Runtime.getRuntime().exec("ifconfig"); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line; while ((line = reader.readLine()) != null) { if (line.contains("ether")) { String[] words = line.trim().split("\\s+"); return words[1]; } } return null; } } ``` 第一种方法使用 NetworkInterface 类来获取 MAC 地址,这种方式可靠性较高,但是需要注意的是,如果主机有多个网卡,可能会获取到多个 MAC 地址。此外,该方法需要在主机上运行,因此不适用于获取远程主机MAC 地址。 第二种方法使用 Runtime 类执行命令来获取 MAC 地址,这种方式比较简单,但是可靠性较差,因为它依赖于命令输出的格式。此外,该方法需要在主机上运行,因此也不适用于获取远程主机MAC 地址。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值