我在java中有读取MAC地址的功能:
for(Enumeration<NetworkInterface> enm = NetworkInterface.getNetworkInterfaces(); enm.hasMoreElements();){ NetworkInterface network = (NetworkInterface) enm.nextElement(); if(null != network.getHardwareAddress()){ System.out.print(network.getDisplayName()); byte[] mac = network.getHardwareAddress(); StringBuilder sb = new StringBuilder(18); for (byte b : mac) { if (sb.length() > 0) sb.append(':'); sb.append(String.format("%02x", b & 0xff)); } System.out.print(sb.toString()); return null; } }
这个结果: wlan0:00:25:d3:9c:ad:7a 但当我这样做:iwconfig时,我表示:00:0D:F3:0D:DD:DC for wlan0
问题,为什么?
编辑: 对不起,我很抱歉 当我运行ifconfig(而不是iwconfig)时,它会响应:
wlan0链接封装:以太网HWaddr 00:25:d3:9c:ad:7a
inet addr:192.168.50.100 Bcast:192.168.50.255掩码:255.255.255.0 inet6 addr:fe80 :: 225:d3ff:fe9c:ad7a / 64范围:链接 UP BROADCAST RUNNING MULTICAST MTU:1500公制:1 RX数据包:2417546错误:0丢弃:0超限:0帧:0 TX数据包:1608679错误:0丢弃:0溢出:0载波:0 碰撞:0 txqueuelen:1000 RX字节:3099222889(3.0 GB)TX字节:183978636(183.9 MB)
所以没关系,谢谢你。
答案 0 :(得分:0)
尝试运行此代码:
for (Enumeration<NetworkInterface> enm = NetworkInterface
.getNetworkInterfaces(); enm.hasMoreElements();) {
NetworkInterface network = (NetworkInterface) enm.nextElement();
if (null != network.getHardwareAddress()) {
System.out.print(network.getDisplayName() + " is ");
byte[] mac = network.getHardwareAddress();
StringBuilder sb = new StringBuilder(18);
for (byte b : mac) {
if (sb.length() > 0)
sb.append(':');
sb.append(String.format("%02x", b & 0xff));
}
System.out.println(sb.toString());
}
}
这将打印出所有网络接口的名称/ mac地址,旧代码只是第一个。查看这些mac地址中是否有任何一个与iwconfig
给出的地址匹配