当前位置: 移动技术网 > IT编程>开发语言>Java > java 获取mac地址的两种方法(推荐)

java 获取mac地址的两种方法(推荐)

2019年07月22日  | 移动技术网IT编程  | 我要评论

数字泾县市民论坛,冯矿伟 新浪博客,百得佳士

我在网上找了一下获取mac地址的方法,找了两种比较不太一样的方法。

第一种

public static void main(string[] args) throws exception {
inetaddress ia = inetaddress.getlocalhost();
system.out.println(getmacaddress(ia));
}
private static string getmacaddress(inetaddress ia) throws exception {
// 获得网络接口对象(即网卡),并得到mac地址,mac地址存在于一个byte数组中。
byte[] mac = networkinterface.getbyinetaddress(ia).gethardwareaddress();

// 下面代码是把mac地址拼装成string
stringbuffer sb = new stringbuffer();

for (int i = 0; i < mac.length; i++) {
if (i != 0) {
sb.append("-");
}
// mac[i] & 0xff 是为了把byte转化为正整数
string s = integer.tohexstring(mac[i] & 0xff);
sb.append(s.length() == 1 ? 0 + s : s);
}

// 把字符串所有小写字母改为大写成为正规的mac地址并返回
return sb.tostring().touppercase();
}

这种方法貌似是只能取本机的mac地址的。

第二种

public static void main(string[] args) throws exception {
getmac("192.168.1.186");
}
public static string getmac(string ip){
string str = null;
string mac = null;
try{
process p = runtime.getruntime().exec("nbtstat -a " + ip); 
inputstreamreader ir = new inputstreamreader(p.getinputstream(),"gbk"); 
linenumberreader input = new linenumberreader(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(ioexception e){
e.printstacktrace();
}
return mac;
}

这种方法是我比较喜欢的,不过这种方法呢在时间效率上可能会稍差一些。这个里面有一个比较需要注意的点就是数据流那里记得要改成gbk格式的,不然读出来的数据是乱码的,后面就会无法进行了,然后识别字段那里,可能有一些会是"mac address",所以可能需要自己做一些调整。

以上就是小编为大家带来的java 获取mac地址的两种方法(推荐)全部内容了,希望大家多多支持移动技术网~

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网