繁体   English   中英

获取已连接网络设备的唯一 ID

[英]Get an unique id for a connected network device

我连接到 WLAN,其中还连接了一个特殊的硬件设备。 我通过套接字与该设备通信,因为我知道它的 IP。

是否可以通过 id 来识别网络中的硬件设备? 我发现在 Java 中无法获得连接设备的 MAC 地址。 还有其他选择吗?

谢谢,最好的问候

Mac 地址应该是唯一的。 也许您可以从 ARP 表中获取所需的信息。 命令“arp -a”适用于 Windows 和 Linux。

但是有一个问题:

  1. 这不是便携方式
  2. ARP表变化很大
  3. 如果设备在路由器后面,则这不起作用。

在 Java 中,您可以调用NetworkInterface.getHardwareAddress()返回硬件 MAC 地址

Enumeration<NetworkInterface> enumNicList = NetworkInterface.getNetworkInterfaces();
while(enumNicList.hasMoreElements())
{
    NetworkInterface oNic = enumNicList.nextElement();
    byte[] baMacAddress = oNic.getHardwareAddress();
    String sMacAddress = new BigInteger(1, baMacAddress).toString(16);
    System.out.println(sMacAddress);
}

如果您无法控制设备的响应,并且设备不包含任何识别 API 调用等,那么只需使用 IP 地址并通过路由器将该 IP 静态分配给该设备。 然后,您可以创建自己的 IP <-> 设备列表表,甚至可以从路由器上删除 IP 表。

想想看,您可能会以相同的方式获取 MAC 地址 - 从路由器的配置屏幕上刮下 DHCP 表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM