java 获取mac地址的两种方法(推荐)
程序员文章站
2024-03-12 11:04:20
我在网上找了一下获取mac地址的方法,找了两种比较不太一样的方法。
第一种
public static void main(string[] args) thr...
我在网上找了一下获取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地址的两种方法(推荐)全部内容了,希望大家多多支持~
上一篇: Java无限级树(递归)超实用案例
下一篇: java文件上传下载功能实现代码