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

标签 c++ winapi network-programming dhcp

我正在编写 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/

相关文章:

c++ - union 中出现意外结果 (C++)

c++ - "invalid conversion from"与 pthread_create 问题

c++ - CreateDirectory 函数不起作用

winapi - 在 C++ Windows API 运行时调整窗口大小?

c++ - 64 位 SendMessage API

c - 未决请求队列存储在哪里?

c++ - 避免在 Linux 下的共享对象 C 接口(interface)上进行名称重整

c# - 无法使用单声道连接到在 ubuntu 上运行的自己的 IPv6 TCP 服务器应用程序

linux - dnsmasq - 将所有域(包括路径)解析为同一地址

c++将具有可变数量参数的函数作为参数传递给其他函数