【问题标题】:Get an unique id for a connected network device获取已连接网络设备的唯一 ID
【发布时间】:2011-11-30 14:28:25
【问题描述】:

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

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

谢谢, 最好的问候

【问题讨论】:

  • 您声明您已经知道设备的 IP。你需要什么进一步的证明?请澄清。
  • 设备 IP 不唯一。问题是程序保存了ips。如果有不同的设备连接并与我的设备具有相同的 IP,我必须能够区分它们。
  • 您对设备上运行的软件有任何控制权吗?
  • 这是一个特殊的硬件设备,我无法控制软件。

标签: java sockets networking mac-address


【解决方案1】:

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

但是有一个问题:

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

【讨论】:

  • 谢谢,用Java解析控制台就可以了!
【解决方案2】:

在 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);
}

【讨论】:

    【解决方案3】:

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

    想一想,您可能会以同样的方式获取 MAC 地址 - 从路由器的配置屏幕上删除 DHCP 表。

    【讨论】:

    • 正如上面所写的,IP 不是唯一的,因为设备并不总是具有相同的 IP - 例如在重新连接设备之后,甚至在另一个路由器网络中。我想在运行时找出 Java 中的唯一设备标识。
    • 那么我假设您无法访问该网络中的路由器?如果您无法控制设备及其应用程序,并且它不发送任何可识别信息,并且它没有识别 API,并且它查询您的应用程序的方式没有独特的特征,那么您就不走运了。
    • 在某些情况下,路由器可能会受到控制。但无论如何,应用程序应在运行时确定 MAC 地址/id。
    猜你喜欢
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-07
    相关资源
    最近更新 更多