Java 获取本地机器mac地址
记录一下Java获取跨平台mac地址
try {
Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements()) {
NetworkInterface iface = networkInterfaces.nextElement();
// 获取对应网络接口的所有接口地址(InterfaceAddress)
List<InterfaceAddress> addrs = iface.getInterfaceAddresses();
for (InterfaceAddress addr : addrs) {
// 返回网络接口地址对应的IP地址
InetAddress ip = addr.getAddress();
if (!(ip instanceof Inet4Address)){
continue;
}
// 方便方法搜索到绑定到其的具体IP地址的网络接口(NetworkInterface)
NetworkInterface networkInterface = NetworkInterface.getByInetAddress(ip);
// 若为空, 跳过
if (networkInterface == null) {
continue;
}
// 当网络接口有权限连接, 并且其具有MAC地址时, 返回二进制MAC硬件地址
byte[] mac = networkInterface.getHardwareAddress();
if (null==mac){
continue;
}
return format(mac);
}
}
} catch (Exception e) {
e.printStackTrace();
}
/**
* 将 mac 字节数组格式化为全大写并且使用 - 作为分隔符的字符串
*
* @param mac 获取到的 mac 字节数组
*
* @return 格式化后的 mac 地址
*/
private static String format(byte[] mac) {
StringBuilder sb = new StringBuilder();
for (byte b : mac) {
sb.append(String.format("%02X", b)).append("-");
}
sb.deleteCharAt(sb.length() - 1);
return sb.toString();
}
有问题欢迎留言