我需要在任意 IP 网络上存储对第三方设备的持久引用,其中设备的 IP 地址可能是静态的或由 DHCP 随机分配。我不控制网络上的设备,也不能依赖 DNS 和其他现有的或与设备一起工作的 ad-hoc 网络协议。
因此,我被指示使用硬件地址和 ARP 进行调查。这会起作用,但我不想重复代码。内核必须管理一个 ARP 表。在 Windows 上,您可以使用GetIpNetTable等访问它。
我希望有一个 API 可以回答这两个问题:
- 如何从 IP 转换为 MAC 地址?(ARP)
- 如何从 MAC 转换为 IP 地址?(InARP)
如果没有,那么我可能不得不手动进行更多操作:
- 如何读取内核的 ARP 表?
- 如果我自己确定了映射,如何添加条目?