2016-06-10 129 views
0

我正在尝试开发一个开源网络监视应用程序 应用程序扫描网络以查找所有连接的设备。它显示给定范围内的所有IP,但连接的设备将显示带有复选框(JCheckBox)。我使用address.getHostName()和address.getHostAddress() - 类中的方法InetAddress- 将有关每个设备的信息(如名称或IP地址)列入JTable中的连接设备现在我试图获取物理地址(MAC )。我试过这段代码,但应用程序只显示本地设备;没有出现给定IP范围内的设备(连接或断开连接)。如何获取使用java的网络设备的MAC地址

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(); 
+0

复制https://stackoverflow.com/questions/1238963/query-arp-cache-to-get-mac-id(以及其他许多人)。 – Pixel

回答

1

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

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

  • ARP -a查找(UNIX特定的方式)
  • SNMP请求
  • 发送自己的ARP请求报文

反正你可以得到MAC地址只属于您本地网络中的设备。

相关问题