Java获取本地MAC地址代码示例

需积分: 21 8 下载量 19 浏览量 更新于2024-09-25 收藏 1KB TXT 举报
"Java程序用于获取本地计算机的MAC地址,通过遍历网络接口并提取硬件地址来实现。" 在Java中,获取本机MAC(Media Access Control)地址是一个常见的需求,特别是在需要唯一标识一台计算机或者进行网络通信时。MAC地址是网络设备如网卡的物理地址,它是一个6字节的二进制数,通常以十六进制形式表示。在Java中,我们可以使用`java.net.NetworkInterface`类来获取这些信息。 以下是一个简单的Java程序,展示了如何获取本机MAC地址: ```java import java.net.NetworkInterface; import java.net.SocketException; import java.util.Enumeration; /* * @author MrWang * 获取用户MAC地址 */ public class MacAddress { public static String hexByte(byte b) { String s = "000000" + Integer.toHexString(b); return s.substring(s.length() - 2); } public static String getMAC() { Enumeration<NetworkInterface> el; String mac_s = ""; try { el = NetworkInterface.getNetworkInterfaces(); while (el.hasMoreElements()) { byte[] mac = el.nextElement().getHardwareAddress(); if (mac == null) continue; mac_s = hexByte(mac[0]) + "-" + hexByte(mac[1]) + "-" + hexByte(mac[2]) + "-" + hexByte(mac[3]) + "-" + hexByte(mac[4]) + "-" + hexByte(mac[5]); System.out.println(mac_s + " MAC地址"); } } catch (SocketException e1) { e1.printStackTrace(); } return mac_s; } public static void main(String[] args) { MacAddress m = new MacAddress(); m.getMAC(); } } ``` 在这个程序中,`getMAC()`方法是核心部分。首先,它通过`NetworkInterface.getNetworkInterfaces()`获取所有网络接口的枚举。接着,遍历这些接口,调用`getHardwareAddress()`获取每个接口的MAC地址。由于MAC地址是一个字节数组,程序将其转换为十六进制字符串,并在每个字节之间插入破折号,以便于人类阅读。`hexByte()`方法用于将单个字节转换为两位的十六进制字符串。 如果在运行过程中遇到`SocketException`,程序会打印堆栈跟踪,这是由于访问网络接口信息可能受到操作系统权限限制或网络接口不存在等情况导致的。 请注意,这个程序只获取了第一个非NULL的MAC地址,如果计算机有多个网络接口(例如,有无线和有线网卡),可能需要进一步处理以获取特定接口的MAC地址。此外,某些操作系统可能会返回虚拟的MAC地址,如VMware或VirtualBox等虚拟化环境中的情况。 这个Java代码提供了一个基础的方法来获取本地计算机的MAC地址,但实际应用中可能需要根据具体需求进行调整和优化。