如何使用java获取网络设备的MAC地址

时间:2016-06-10 18:38:00

标签: java networking network-programming inetaddress

我正在尝试开发一个开源网络监控应用程序 应用程序扫描网络以查找所有连接的设备。它显示给定范围内的所有IP,但连接的设备将显示复选框(JCheckBox)。我在JTable中列出连接的设备,其中包含有关每个设备的信息,例如名称或IP地址,使用地址InetAddress-中的address.getHostName()和address.getHostAddress()-Methods- 现在我想获得物理地址(MAC)。我尝试了这个代码,但应用程序只显示本地设备;未显示给定IP范围内的设备(已连接或已断开连接)。

byte[] mac = NetworkInterface.getByInetAddress(address).getHardwareAddress();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < mac.length; i++) {
    sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));
}
String MAC = sb.toString();

1 个答案:

答案 0 :(得分:1)

要请求MAC(硬件)地址,您需要进行ARP查找。

对适当question的回答可能会对您有所帮助。 有几种方法可以定义:

  • arp -a lookup(特定于UNIX的方式)
  • SNMP请求
  • 发送您自己的ARP请求数据包

无论如何,您可以获得仅属于本地网络中设备的MAC地址。