Java获取本机Mac地址
- 游戏开发
- 2025-09-18 04:18:01

REF: blog.csdn.net/weixin_43760864/article/details/111293912
获取本机Mac地址优先级1:有线接口(排除虚拟接口) 优先级2:无线接口(排除虚拟接口) 优先级3:虚拟接口
import java.net.NetworkInterface; import java.net.SocketException; import java.util.Arrays; import java.util.Collections; import java.util.Enumeration; import java.util.List; public class PrioritizedMacAddress { public static void main(String[] args) { String macAddress = getMACAddress(); System.out.println("本机MAC地址:" + macAddress); } public static String getMACAddress() { // 优先级1:有线接口(排除虚拟接口) String mac = findMacAddress( Arrays.asList("eth", "en", "本地连接"), // 有线接口常见名称 Arrays.asList("vm", "vbox", "virtual", "wsl") // 虚拟接口排除列表 ); // 优先级2:无线接口(排除虚拟接口) //if (mac == null) { if (mac == null) { mac = findMacAddress( Arrays.asList("wlan", "wi-fi", "wl"), // 无线接口常见名称 Arrays.asList("vm", "vbox", "virtual", "wsl") ); } // 优先级3:虚拟接口 if (mac == null) { mac = findMacAddress( Arrays.asList("vm", "vbox", "virtual", "wsl"), // 虚拟接口标识 Collections.emptyList() // 不排除任何接口 ); } return mac != null ? mac : "未找到有效MAC地址"; } /** * 根据接口名称特征查找MAC地址 * @param includeKeywords 接口名称包含的关键字(OR逻辑) * @param excludeKeywords 接口名称排除的关键字(OR逻辑) */ private static String findMacAddress(List<String> includeKeywords, List<String> excludeKeywords) { try { Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces(); while (interfaces.hasMoreElements()) { NetworkInterface networkInterface = interfaces.nextElement(); // 基础过滤:回环接口、未启用接口、无效MAC if (networkInterface.isLoopback() || !networkInterface.isUp() || networkInterface.getHardwareAddress() == null) { continue; } // MAC地址有效性检查 byte[] macBytes = networkInterface.getHardwareAddress(); if (macBytes.length != 6) continue; // 接口名称处理 String interfaceName = networkInterface.getName().toLowerCase(); // 包含关键字检查 boolean containsInclude = includeKeywords.stream() .anyMatch(keyword -> interfaceName.contains(keyword.toLowerCase())); // 排除关键字检查 boolean containsExclude = excludeKeywords.stream() .anyMatch(keyword -> interfaceName.contains(keyword.toLowerCase())); if (containsInclude && !containsExclude) { // 格式转换:字节转十六进制 StringBuilder sb = new StringBuilder(); for (int i = 0; i < macBytes.length; i++) { sb.append(String.format("%02X%s", macBytes[i] & 0xFF, (i < macBytes.length - 1) ? ":" : "") ); } return sb.toString(); } } } catch (SocketException e) { e.printStackTrace(); } return null; } }Java获取本机Mac地址由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Java获取本机Mac地址”
上一篇
【前端知识】Vue2.x与3.x之间的区别以及升级过程需要关
下一篇
各种传参形式