【7.1.1】【rule】更新mac地址获取工具类

pull/22/head
fengshuonan 2021-08-21 18:56:58 +08:00
parent 587342143a
commit 6e2c0600e3
1 changed files with 58 additions and 0 deletions

View File

@ -0,0 +1,58 @@
package cn.stylefeng.roses.kernel.rule.util;
import java.net.InetAddress;
import java.net.InterfaceAddress;
import java.net.NetworkInterface;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* mac
*
* @author fengshuonan
* @date 2020/11/13 12:59
*/
public class MacAddressUtil {
/**
* mac
* <p>
*
*
* @author fengshuonan
* @date 2020/11/13 13:00
*/
public static List<String> getMacList() throws Exception {
java.util.Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces();
StringBuilder sb = new StringBuilder();
ArrayList<String> tmpMacList = new ArrayList<>();
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都是一样的
return tmpMacList.stream().distinct().collect(Collectors.toList());
}
}