使用 DHCP 发现 Android 设备

问题描述

在这里查看了有关 Android 设备自动发现的问题,我得到的最好结果是在监视 UDP 端口 67 时,我可以看到消息类型“发现”和“请求”数据,这些数据可用于非常可靠地检测安卓设备。但我也想检测已经连接的设备。

有没有办法向 UDP 端口 68 上的未知设备询问有关其自身的信息(例如假装我是 DHCP 服务器)?我发现 DHCP 服务器可以发送到设备的唯一消息类型是

DHCPOFFER、DHCPACK、DHCPNAK

到目前为止,我没有成功从设备获得响应,而且我不想破坏获得的 IP 地址。

解决方法

您可以从 DHCP 服务器获取有关特定设备的信息,而不是询问 android 设备。 RFC 2131 协议规范包括 DHCPINFORM 消息。它说“接收 DHCPINFORM 消息的服务器使用适合客户端的任何本地配置参数构造 DHCPACK 消息,而无需:分配新地址……”。当您知道设备 IP 地址时,您可以向 DHCP 服务器发送 DHCPINFORM 请求,并在不破坏任何内容的情况下获得服务器知道的关于设备的所有信息。