当前位置:首页 > 操作系统 > MacOs

java获取mac物理地址(转)

package com.simonjia.util.other;<br /><br />import java.net.InetAddress;<br />import java.net.InterfaceAddress;<br />import java.net.NetworkInterface;<br />import java.util.ArrayList;<br />import java.util.List;<br />import java.util.stream.Collectors;<br /><br />public class MacTools {<br />    /***因为一台机器不一定只有一个网卡呀,所以返回的是数组是很合理的***/<br />    public static List<String> getMacList() throws Exception {<br />        java.util.Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces();<br />        StringBuilder sb = new StringBuilder();<br />        ArrayList<String> tmpMacList = new ArrayList<>();<br />        while (en.hasMoreElements()) {<br />            NetworkInterface iface = en.nextElement();<br />            List<InterfaceAddress> addrs = iface.getInterfaceAddresses();<br />            for (InterfaceAddress addr : addrs) {<br />                InetAddress ip = addr.getAddress();<br />                NetworkInterface network = NetworkInterface.getByInetAddress(ip);<br />                if (network == null) {<br />                    continue;<br />                }<br />                byte[] mac = network.getHardwareAddress();<br />                if (mac == null) {<br />                    continue;<br />                }<br />                sb.delete(0, sb.length());<br />                for (int i = 0; i < mac.length; i++) {<br />                    sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));<br />                }<br />                tmpMacList.add(sb.toString());<br />            }<br />        }<br />        if (tmpMacList.size() <= 0) {<br />            return tmpMacList;<br />        }<br />        /***去重,别忘了同一个网卡的ipv4,ipv6得到的mac都是一样的,肯定有重复,下面这段代码是。。流式处理***/<br />        List<String> unique = tmpMacList.stream().distinct().collect(Collectors.toList());<br />        return unique;<br />    }<br />    <br />    public static void main(String[] args) throws Exception {<br />        long a = System.currentTimeMillis();<br />        System.out.println("进行 multi net address 测试===》");<br />        List<String> macs = getMacList();<br />        long b = System.currentTimeMillis();<br />        System.out.println("本机的mac网卡的地址有:" + macs);<br />        System.out.println("总耗时----" + (b - a) + "-----ms");<br />    }<br />}

java获取mac物理地址(转) - 文章图片

 

博主原文太长,只取精华-0-  详细可见:https://blog.csdn.net/cdnight/article/details/86741265


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐