java 获取mac地址的两种方法(推荐)
我在网上找了一下获取mac地址的方法,找了两种比较不太一样的方法。
第一种
publicstaticvoidmain(String[]args)throwsException{
InetAddressia=InetAddress.getLocalHost();
System.out.println(getMACAddress(ia));
}
privatestaticStringgetMACAddress(InetAddressia)throwsException{
//获得网络接口对象(即网卡),并得到mac地址,mac地址存在于一个byte数组中。
byte[]mac=NetworkInterface.getByInetAddress(ia).getHardwareAddress();
//下面代码是把mac地址拼装成String
StringBuffersb=newStringBuffer();
for(inti=0;i<mac.length;i++){
if(i!=0){
sb.append("-");
}
//mac[i]&0xFF是为了把byte转化为正整数
Strings=Integer.toHexString(mac[i]&0xFF);
sb.append(s.length()==1?0+s:s);
}
//把字符串所有小写字母改为大写成为正规的mac地址并返回
returnsb.toString().toUpperCase();
}
这种方法貌似是只能取本机的mac地址的。
第二种
publicstaticvoidmain(String[]args)throwsException{
getMac("192.168.1.186");
}
publicstaticStringgetMac(Stringip){
Stringstr=null;
Stringmac=null;
try{
Processp=Runtime.getRuntime().exec("nbtstat-A"+ip);
InputStreamReaderir=newInputStreamReader(p.getInputStream(),"gbk");
LineNumberReaderinput=newLineNumberReader(ir);
for(;true;){
str=input.readLine();
if(str!=null){
if(str.indexOf("MAC地址")>1){
mac=str.substring(str.indexOf("MAC地址")+9);
break;
}
}
}
System.out.println(mac);
}catch(IOExceptione){
e.printStackTrace();
}
returnmac;
}
这种方法是我比较喜欢的,不过这种方法呢在时间效率上可能会稍差一些。这个里面有一个比较需要注意的点就是数据流那里记得要改成gbk格式的,不然读出来的数据是乱码的,后面就会无法进行了,然后识别字段那里,可能有一些会是"MACaddress",所以可能需要自己做一些调整。
以上就是小编为大家带来的java获取mac地址的两种方法(推荐)全部内容了,希望大家多多支持毛票票~