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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/541029.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微软免费软件项目DreamSpark更名为Microsoft Imagine

9月10日消息,微软免费软件项目DreamSpark近日正式更名为Microsoft Imagine,将与一年一度的微软“创新杯(Imagine Cup)”齐名。微软免费软件项目DreamSpark更名为Microsoft Imagine  2008年2月19日,微软公司董事长比尔盖茨在斯坦福大学发布了…

java jpa_Java JPA 语法知识

前提操作创建一个可持久化的实体类dao层继承JpaRepositoryT:实体类ID:实体类的主键类型例:public interface SysUserRespository extends JpaRepository {}JPA中支持的关键词And --- 等价于 SQL 中的 and 关键字,比如 findByUsern…

array.slice_Ruby中带有示例的Array.slice()方法

array.sliceArray.slice()方法 (Array.slice() Method) In this article, we will study about Array.slice() method. You all must be thinking the method must be doing something which is related to the slicing of elements or objects in the Array instance. It is n…

阿特斯携手EDF启动建设巴西191.5MW光伏项目

2016年10月11日,阿特斯太阳能(安大略省,圭尔夫)和EDF Energies Nouvelles(法国,巴黎)共同宣布,将阿特斯巴西Pirapora I太阳能项目80%的股权出售给EDF的巴西本地子公司EDF…

apachejmeter_java源码_自定义编写jmeter的Java测试代码

我们在做性能测试时,有时需要自己编写测试脚本,很多测试工具都支持自定义编写测试脚本,比如LoadRunner就有很多自定义脚本的协议,比如"C Vuser","JavaVuser"等协议.同样,Jmeter也支持自定义编写的测试代码,不过与LoadRunner不同的是,Jmeter没有自带编译器,…

julia fit 函数_带有Julia中示例的flipsign()函数

julia fit 函数Julia| flipsign()函数 (Julia | flipsign() function) flipsign() function is a library function in Julia programming language, it accepts two values as parameters and returns a value with the magnitude of first value and sign of the first value…

优化Android应用内存的若干方法

https://my.oschina.net/chaselinfo/blog/198172摘要: 在app开发的各个阶段中要考虑RAM的限制问题, 包括在设计阶段(正式开发之前). 使用下面的不同的方法可以达到很好的效果. 当您在设计和开发Android应用时用下面的方法可以使内存运用最高效.使用保守的Service 如果你的应用需…

一? ilkkn.n_IL&FS的完整形式是什么?

一? il&kkn.nIL&FS:基础设施租赁和金融服务 (IL& FS: Infrastructure Leasing & Financial Services) IL&FS is an abbreviation of Infrastructure Leasing & Financial Services. It is the largest infrastructure development …

java notify唤醒原理_Java wait和notify虚假唤醒原理

自己在此记录一下,方便日后复习。虚假唤醒的概念jdk官方文档解释:所以说在wait和notify一块使用时,如果使用if作为条件时,会有虚假唤醒的情况发生,所以必须使用while作为循环条件。下面来举例实验:首先&…

C#里面的三种定时计时器:Timer

在.NET中有三种计时器:1、System.Windows.Forms命名空间下的Timer控件,它直接继承自Componet。Timer控件只有绑定了Tick事件和设置EnabledTrue后才会自动计时,停止计时可以用Stop()方法控制,通过Stop()停止之后,如果想…

wireshark rto_RTO的完整形式是什么?

wireshark rtoRTO:地区运输办公室/公路运输办公室 (RTO: Regional Transport Office/ Road Transport Office) RTO is an abbreviation of the Regional Transport Office. It is an Indian Government departmental organization that is responsible for upholdin…

java8 json转xml_2019-08-17java对象与json,xml互转

依赖的jar包,jackson-all-1.7.6.jar,xstream-1.4.4.jar下载地址:链接:https://pan.baidu.com/s/1LflD135qlQiIPGXw5XwDmw提取码:6v29复制这段内容后打开百度网盘手机App,操作更方便哦package json_xml;import com.thoughtworks.xs…

10.8-全栈Java笔记:序列化/反序列化的步骤和实例

本节我们详细讲解10.3节中提到的序列化和反序列化操作。序列化和反序列化是什么当两个进程远程通信时,彼此可以发送各种类型的数据。 无论是何种类型的数据,都会以二进制序列的形式在网络上传送。比如,我们可以通过http协议发送字符串信息&am…

有效的网络推广超级实用方法

我叫龙雨,先后在百度搜狗工作过3年,后来一直负责一家公司的的网络营销!不知道大家有没有听过111>3这样一个概念,简单来说一下这概念!第一呢就是自己的资源,把自己的资源维护好开发好;第二就是网络营销,网络营销利用…

什么为java运行时的环境_什么是JRE?Java运行时环境简介(一)

Java开发工具包(JDK),Java虚拟机(JVM)和Java运行时环境(JRE)共同构成了用于开发和运行Java应用程序的Java平台组件的强大功能.实际上,运行时环境是一种旨在运行其他软件的软件.作为Java的运行时环境,JRE包含Java类库,Java类加载器和Java虚拟机.在这个系统中:的类加载器是负责正…

c语言atoll函数怎么用_C ++中带有示例的atoll()函数

c语言atoll函数怎么用C Atoll()函数 (C atoll() function) atoll() function is a library function of cstdlib header. It is used to convert the given string value to the integer value. It accepts a string containing an integer (integral) number and returns its…

看清美国“黑客帝国”的真面目

“维基揭秘”网站近日发布了近9000份据称属于美国中央情报局的机密文件,显示中情局拥有强大的黑客攻击能力,秘密侵入了手机、电脑、智能电视等众多智能设备。继美国国家安全局承包商前雇员斯诺登曝光国安局“棱镜”等监控计划之后,此次曝光再…

python 示例_带有示例的Python File close()方法

python 示例文件close()方法 (File close() Method) close() method is an inbuilt method in Python, it is used to flush and close the IO object (file). If we close a closed file it has no effect. close()方法是Python中的内置方法,用于刷新和关闭IO对象(…

linux上mysql分区磁盘位置_Linux下Oracle软件、数据文件等所在的磁盘分区空间不足的解决思路...

虚拟机中的ORACLE运行的久了,归档、数据文件不断增长,原来安装ORACLE的分区空间不足。此时可以重新向虚拟机增加一块硬盘,将OR虚拟机中的Oracle运行的久了,归档、数据文件不断增长,原来安装ORACLE的分区空间不足。此时…

FloatingActionMenu 向上弹出菜单

本人在github上找到了一个FloatingActionsMenu,精简了其效果(原效果有上下左右四个方向)仅仅保留向上的效果,并做了一定的优化。github上的源代码:地址 ,精简后的源代码地址:源代码地址。 转载于:https://www.cnblogs.…