如何从任意客户端查找DHCP租约信息?

时间:2016-04-21 17:22:58

标签: c++ winapi network-programming dhcp

我正在编写Win32 API(C ++)代码来查询网络中的某些信息。其中一条信息是DHCP租约结束时间。我能够从GetIpNetTable(和/或GetIpNetTable2)函数中获取我需要的大部分信息;但是在加载Google,MSDN,Stackoverflow搜索之后,我无法找到从任意客户端获取所有租约信息的方法(此代码不在服务器上运行)。我熟悉GetAdaptersInfo功能但只检索当前机器的信息,而不是网络上的所有机器。有谁知道从任意客户端映射出网络的所有DHCP租约信息的方法?

1 个答案:

答案 0 :(得分:1)

您可以通过实现只读DHCP服务器来实现此目的。客户端将发送DHCPDISCOVER消息作为您可以接收的广播(在UDP端口67上)。响应的DHCP服务器将广播回DHCPOFFER,包括客户端的MAC地址,相关的IP信息和租用时间。如果客户端接受这些设置,它现在将广播DHCPREQUEST消息,以便您的只读服务器知道客户端将(尝试)使用DHCPOFFER信息。您无法从服务器看到DHPCACK确认,但如果客户端发生故障,它将发送新的DHCPDISCOVER。这样,您就可以构建一个DHCP信息表,包括本地客户端的租约时间。