我正在编写 Win32 API (C++) 代码来查询网络以获取特定信息。其中一条信息是 DHCP 租约结束时间。我能够从 GetIpNetTable
(和/或 GetIpNetTable2
)函数中获得我需要的大部分信息;但是在谷歌、MSDN、Stackoverflow 的大量搜索之后,我找不到从任意客户端获取所有租赁信息的方法(此代码不在服务器上运行)。我熟悉 GetAdaptersInfo
函数,但它只检索当前机器的信息,而不是网络上所有机器的信息。有谁知道从任意客户端映射出网络的所有 DHCP 租约信息的方法吗?
最佳答案
你可以通过实现一个只读的 DHCP 服务器来做到这一点。客户端将发送一条 DHCPDISCOVER 消息作为广播(在 UDP 端口 67 上),您可以接收该消息。响应的 DHCP 服务器将广播回 DHCPOFFER,包括客户端的 MAC 地址、相关 IP 信息和租用时间。如果客户端接受这些设置,它现在将广播 DHCPREQUEST 消息,这样您的只读服务器将知道客户端将(尝试)使用 DHCPOFFER 信息。您看不到来自服务器的 DHPCACK 确认,但如果客户端出现故障,它将发送一个新的 DHCPDISCOVER。通过这种方式,您可以构建一个 DHCP 信息表,其中包括本地客户端的租用时间。
关于c++ - 如何从任意客户端查找 DHCP 租约信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36776545/