首页 > 编程 > Java > 正文

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

2019-11-26 13:42:29
字体:
来源:转载
供稿:网友

我在网上找了一下获取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地址拼装成StringStringBuffer 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地址的两种方法(推荐)全部内容了,希望大家多多支持武林网~

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表