我需要打印我的机器的所有mac地址。 推荐的方法是使用NetworkInterface.getNetworkInterfaces()并遍历返回的枚举。 但是,当一些设备closures(没有IPconfiguration),那么上述方法将不会返回接口。
以下是我为testing目的而编写的代码:
Enumeration<NetworkInterface> ni = NetworkInterface.getNetworkInterfaces(); while(ni.hasMoreElements()){ NetworkInterface nextElement = ni.nextElement(); byte[] mac = nextElement.getHardwareAddress(); if (mac != null) { StringBuffer macAddress = new StringBuffer(); for (int i = 0; i < mac.length; i++) { macAddress.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? ":" : "")); } System.out.println(macAddress.toString()); } }
输出是: 00:03:B2:75:99:C3 (只有G1)。
如果可能,我确实需要一个纯Java解决scheme。
有什么想法吗 ?
看起来像“IP地址”显示所有的网络适配器,但不是所有的网络地址配置。 所以,Java只返回网络接口,即配置的适配器。