4

可能重复:
查询 ARP 缓存以获取 MAC ID

我需要获取连接到我的家庭网络的所有远程机器的 mac 地址。我可以使用下面的代码读取我自己机器的mac地址,但我不知道如何获取我网络上其他机器的mac地址。或者有没有可能。

import java.net.InetAddress;
import java.net.NetworkInterface;
class Test {
public static void main(String[] args) throws Exception {
InetAddress address = InetAddress.getLocalHost();

NetworkInterface ni = NetworkInterface.getByInetAddress(address);
byte[] mac = ni.getHardwareAddress();

for (int i = 0; i < mac.length; i++) {
  System.out.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : "");
}
}
}  

输出(MyComputer 的 6byte mac 地址)
30-60-77-12-cd-99

4

1 回答 1

1

如何获取远程机器的mac地址

你不能那样做——一般情况下不能。MAC地址只对同一物理网段的机器可用。这些机器使用ARP协议直接相互通信,以将 IP 地址“转换”为物理 (MAC) 地址。

一旦跨过 IP 路由器或任何其他第 3 层设备,通常会丢失任何 MAC 信息。

底线:您无法通过 Internet 获取远程节点的 MAC 地址 - 您甚至无法在任何中等规模的专用网络中做到这一点,例如大多数大中型公司所实施的。

于 2012-12-28T02:46:31.647 回答