java 获取 mac_使用java获取本机mac

不开心,辛苦写的第一篇文章不小心删除了还恢复不了

想用java 获得本机地址,搜了下,觉得这个看起来不错,简洁

importjava.net.InetAddress;importjava.net.NetworkInterface;importjava.net.SocketException;importjava.net.UnknownHostException;public classapp{public static voidmain(String[] args){

InetAddress ip;try{

ip=InetAddress.getLocalHost();

System.out.println("Current IP address : " +ip.getHostAddress());

NetworkInterface network=NetworkInterface.getByInetAddress(ip);byte[] mac =network.getHardwareAddress();

System.out.print("Current MAC address : ");

StringBuilder sb= newStringBuilder();for (int i = 0; i < mac.length; i++) {

sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));

}

System.out.println(sb.toString());

}catch(UnknownHostException e) {

e.printStackTrace();

}catch(SocketException e){

e.printStackTrace();

}

}

}

好多都是这个版本,问题在于,一运行,报错了!!很无语,排查了很久也找不到原因,看getHardwareAddress API也没发现错误,很无奈。

mei@mei-X-Series:~/mei/test$ java Ipconfig

mei-X-Series/127.0.1.1Exception in thread"main"java.lang.NullPointerException

at Ipconfig.getLocalMac(Ipconfig.java:24)

at Ipconfig.main(Ipconfig.java:19)

终于在http://rupertanderson.com/blog/soapui-google-analytics-null-pointer-exception-on-ubuntu/ 中找到难友,并获知了原因,that NetworkInterface.getByInetAddress cannot match the Machine Name to any of the Network Interface values.就是不匹配了。

超出了自己的能力范围,看来智能用复杂的代码了,以下代码测试通过

importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;public classgetmac{public staticString getLinuxMACAddress() {

String mac= null;

BufferedReader bufferedReader= null;

Process process= null;try{

process= Runtime.getRuntime().exec("ifconfig enp4s0");

bufferedReader= new BufferedReader(newInputStreamReader(

process.getInputStream()));

String line= null;int index = -1;while ((line = bufferedReader.readLine()) != null) {

index= line.toLowerCase().indexOf("硬件地址");if (index != -1) {

mac= line.substring(index + 4).trim();break;

}

}

}catch(IOException e) {

e.printStackTrace();

}finally{try{if (bufferedReader != null) {

bufferedReader.close();

}

}catch(IOException e1) {

e1.printStackTrace();

}

bufferedReader= null;

process= null;

}returnmac;

}public static voidmain(String[] argc) {

String mac=getLinuxMACAddress();

System.out.println("本地是Linux系统, MAC地址是:" +mac);

}

}

运行结果如下:

本地是Linux系统, MAC地址是:54:ab:3a:05:34:e6

通过最近几周的经历发现,网上的东西都是仅供参考,因为环境的不同、版本的不同会造成很大的差异,而且很多人都只是转载,从未验证,告诫自己无论任何东西,一定要切身验证,

也要养成写博客的习惯,把自己的过程记录记载下来,供别人和自己以后参考。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值