JAVA 获取mac地址

2022-10-20 09:58:23

JAVA 获取mac地址

importjava.net.InetAddress;importjava.net.InterfaceAddress;importjava.net.NetworkInterface;importjava.util.ArrayList;importjava.util.List;importjava.util.stream.Collectors;publicclassGetMacTest{/***因为一台机器不一定只有一个网卡,所以返回的是mac地址集合***/publicstaticList<String>getMacList()throwsException{java.util.Enumeration<NetworkInterface> en=NetworkInterface.getNetworkInterfaces();StringBuilder sb=newStringBuilder();ArrayList<String> tmpMacList=newArrayList<>();while(en.hasMoreElements()){NetworkInterface iface= en.nextElement();List<InterfaceAddress> addrs= iface.getInterfaceAddresses();for(InterfaceAddress addr: addrs){InetAddress ip= addr.getAddress();NetworkInterface network=NetworkInterface.getByInetAddress(ip);if(network==null){continue;}byte[] mac= network.getHardwareAddress();if(mac==null){continue;}
                sb.delete(0, sb.length());for(int i=0; i< mac.length; i++){sb.append(String.format("%02X%s", mac[i],(i< mac.length-1)?"-":""));}
                tmpMacList.add(sb.toString());}}if(tmpMacList.size()<=0){return tmpMacList;}/***去重,同一个网卡的ipv4,ipv6得到的mac都是一样的,可能有重复***/List<String> unique= tmpMacList.stream().distinct().collect(Collectors.toList());return unique;}publicstaticvoidmain(String[] args)throwsException{List<String> macs=getMacList();System.out.println("本机的mac网卡的地址列表"+macs);}}
  • 作者:编程重生之路
  • 原文链接:https://blog.csdn.net/HX0326CSDN/article/details/120225083
    更新时间:2022-10-20 09:58:23