我需要获取连接到家庭网络的所有远程计算机的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
答案 0 :(得分:1)
如何获取远程机器的mac地址
你不能这样做 - 不是在一般情况下。 MAC addresses仅适用于同一物理网段中的计算机。这些机器使用ARP协议直接相互通信,将IP地址“转换”为物理(MAC)地址。
一旦超过IP路由器或任何其他Layer-3设备,任何MAC信息通常都会丢失。
底线:您无法通过互联网获取远程节点的MAC地址 - 您甚至无法在任何中等规模的专用网络中进行此操作,例如在大多数中型到大型公司。