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

时间:2012-12-27 18:18:10

标签: java ip mac-address

  

可能重复:
  Query ARP cache to get 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

1 个答案:

答案 0 :(得分:1)

  

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

你不能这样做 - 不是在一般情况下。 MAC addresses仅适用于同一物理网段中的计算机。这些机器使用ARP协议直接相互通信,将IP地址“转换”为物理(MAC)地址。

一旦超过IP路由器或任何其他Layer-3设备,任何MAC信息通常都会丢失。

底线:您无法通过互联网获取远程节点的MAC地址 - 您甚至无法在任何中等规模的专用网络中进行此操作,例如在大多数中型到大型公司。