Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何从任意客户端查找DHCP租约信息?_C++_Winapi_Network Programming_Dhcp - Fatal编程技术网

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

C++ 如何从任意客户端查找DHCP租约信息?,c++,winapi,network-programming,dhcp,C++,Winapi,Network Programming,Dhcp,我正在编写Win32 API(C++)代码来查询网络中的某些信息。其中一条信息是DHCP租约结束时间。我能够从GetIpNetTable(和/或GetIpNetTable2)函数中获得所需的大部分信息;但在加载Google、MSDN、Stackoverflow搜索之后,我无法找到从任意客户端获取所有租赁信息的方法(此代码不在服务器上运行)。我熟悉getAdapterInfo函数,但它只检索当前机器的信息,而不是网络上所有机器的信息。有人知道如何从任意客户端映射出网络的所有DHCP租约信息吗?您可

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

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

一台计算机无法检索另一台计算机的租约信息。只有DHCP服务器具有该信息,并且每台计算机只知道自己的租约。DHCP协议中没有查询另一台机器租约信息的内容。您必须在每台机器上运行自己的软件,然后连接到该软件,并让它向您报告其本地机器的租约。