发布于 2017-11-09 23:57:08 | 190 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的Java并发编程示例,程序狗速度看过来!

Java程序设计语言

java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。


下面小编就为大家带来一篇java 获取mac地址的两种方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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



最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务