From 6e2c0600e31a017acf4729e8e7ca7e8a3b1a7026 Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Sat, 21 Aug 2021 18:56:58 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=907.1.1=E3=80=91=E3=80=90rule=E3=80=91?= =?UTF-8?q?=E6=9B=B4=E6=96=B0mac=E5=9C=B0=E5=9D=80=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=B7=A5=E5=85=B7=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kernel/rule/util/MacAddressUtil.java | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/MacAddressUtil.java diff --git a/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/MacAddressUtil.java b/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/MacAddressUtil.java new file mode 100644 index 000000000..0edbae85f --- /dev/null +++ b/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/MacAddressUtil.java @@ -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的地址信息列表 + *

+ * 一台机器不一定有多个网卡,所以返回的是数组 + * + * @author fengshuonan + * @date 2020/11/13 13:00 + */ + public static List getMacList() throws Exception { + java.util.Enumeration en = NetworkInterface.getNetworkInterfaces(); + StringBuilder sb = new StringBuilder(); + ArrayList tmpMacList = new ArrayList<>(); + while (en.hasMoreElements()) { + NetworkInterface iface = en.nextElement(); + List 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()); + } + +} \ No newline at end of file