900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > java获取网卡正真的mac_java获取网卡的mac地址

java获取网卡正真的mac_java获取网卡的mac地址

时间:2020-12-25 12:49:10

相关推荐

java获取网卡正真的mac_java获取网卡的mac地址

为了项目的安全,有时候需要得到电脑的唯一码,比如:网卡的mac地址。和大家分享一下,下面是项目中用到的工具类:/**

*获取Mac地址

*@return

*/

publicStringgetMAC(){

try{

InetAddressia=InetAddress.getLocalHost();

byte[]mac=NetworkInterface.getByInetAddress(ia).getHardwareAddress();

//System.out.println("mac数组长度:"+mac.length);

StringBuffersb=newStringBuffer("");

for(inti=0;i

if(i!=0){

sb.append("-");

}

//字节转换为整数

inttemp=mac[i]&0xff;

Stringstr=Integer.toHexString(temp);

if(str.length()==1){

sb.append("0"+str);

}else{

sb.append(str);

}

}

StringmacStr=sb.toString().toUpperCase();

returnmacStr;

}catch(Exceptione){

e.printStackTrace();

}

returnnull;

}

当然除了上面的简单方法还有如下网友提供的方法可以尝试importjava.io.BufferedReader;

importjava.io.IOException;

importjava.io.InputStreamReader;

.InetAddress;

workInterface;

publicclassMacAddressAPI{

/**

*获取当前操作系统名称.return操作系统名称例如:windowsxp,linux等.

*/

publicstaticStringgetOSName(){

returnSystem.getProperty("os.name").toLowerCase();

}

/**

*获取unix网卡的mac地址.非windows的系统默认调用本方法获取.如果有特殊系统请继续扩充新的取mac地址方法.

*@returnmac地址

*/

publicstaticStringgetUnixMACAddress(){

Stringmac=null;

BufferedReaderbufferedReader=null;

Processprocess=null;

try{

//linux下的命令,一般取eth0作为本地主网卡

process=Runtime.getRuntime().exec("ifconfigeth0");

//显示信息中包含有mac地址信息

bufferedReader=newBufferedReader(newInputStreamReader(process.getInputStream()));

Stringline=null;

intindex=-1;

while((line=bufferedReader.readLine())!=null){

//寻找标示字符串[hwaddr]

index=line.toLowerCase().indexOf("hwaddr");

if(index>=0){//找到了

//取出mac地址并去除2边空格

mac=line.substring(index+"hwaddr".length()+1).trim();

break;

}

}

}catch(IOExceptione){

System.out.println("unix/linux方式未获取到网卡地址");

}finally{

try{

if(bufferedReader!=null){

bufferedReader.close();

}

}catch(IOExceptione1){

e1.printStackTrace();

}

bufferedReader=null;

process=null;

}

returnmac;

}

/**

*获取widnows网卡的mac地址.

*@returnmac地址

*/

publicstaticStringgetWindowsMACAddress(){

Stringmac=null;

BufferedReaderbufferedReader=null;

Processprocess=null;

try{

//windows下的命令,显示信息中包含有mac地址信息

process=Runtime.getRuntime().exec("ipconfig/all");

bufferedReader=newBufferedReader(newInputStreamReader(process.getInputStream()));

Stringline=null;

intindex=-1;

while((line=bufferedReader.readLine())!=null){

//寻找标示字符串[physical

index=line.toLowerCase().indexOf("physicaladdress");

if(index>=0){//找到了

index=line.indexOf(":");//寻找":"的位置

if(index>=0){

//取出mac地址并去除2边空格

mac=line.substring(index+1).trim();

}

break;

}

}

}catch(IOExceptione){

System.out.println("widnows方式未获取到网卡地址");

}finally{

try{

if(bufferedReader!=null){

bufferedReader.close();

}

}catch(IOExceptione1){

e1.printStackTrace();

}

bufferedReader=null;

process=null;

}

returnmac;

}

/**

*windows7专用获取MAC地址

*@return

*@throwsException

*/

publicstaticStringgetWindows7MACAddress(){

StringBuffersb=newStringBuffer();

try{

//获取本地IP对象

InetAddressia=InetAddress.getLocalHost();

//获得网络接口对象(即网卡),并得到mac地址,mac地址存在于一个byte数组中。

byte[]mac=NetworkInterface.getByInetAddress(ia).getHardwareAddress();

//下面代码是把mac地址拼装成String

for(inti=0;i

//mac[i]&0xFF是为了把byte转化为正整数

Strings=Integer.toHexString(mac[i]&0xFF);

sb.append(s.length()==1?0+s:s);

}

}catch(Exceptionex){

System.out.println("windows7方式未获取到网卡地址");

}

returnsb.toString();

}

/**

*获取MAC地址

*@paramargc运行参数.

*@throwsException

*/

publicstaticStringgetMACAddress(){

//windows

Stringmac=getWindowsMACAddress();

//windows7

if(isNull(mac)){

mac=getWindows7MACAddress();

}

//unix

if(isNull(mac)){

mac=getUnixMACAddress();

}

if(!isNull(mac)){

mac=mac.replace("-","");

}else{

mac="ABCDEFGHIJ";

}

returnmac;

}

publicstaticbooleanisNull(ObjectstrData){

if(strData==null||String.valueOf(strData).trim().equals("")){

returntrue;

}

returnfalse;

}

publicstaticvoidmain(String[]args){

System.out.println("当前操作系统:"+getOSName());

System.out.println(getWindows7MACAddress());

System.out.println(getMACAddress());

System.out.println(getWindowsMACAddress());

System.out.println(getUnixMACAddress());

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。