2016-04-21 90 views
3

我正在寫Win32 API(C++)代碼來查詢網絡的某些信息。其中一條信息是DHCP租約結束時間。我能夠從GetIpNetTable(和/或GetIpNetTable2)的功能中獲得大部分所需的信息;但在谷歌,MSDN,Stackoverflow搜索加載後,我無法找到從任意客戶端獲取所有租賃信息的方式(此代碼不在服務器上運行)。我熟悉GetAdaptersInfo函數,但它只能檢索當前機器的信息,而不是網絡上的所有機器。有誰知道從任意客戶端映射網絡的所有DHCP租用信息的方法嗎?如何從任意客戶端查找DHCP租約信息?

+1

一臺機器無法檢索另一臺機器的租賃信息。只有DHCP服務器具有該信息,並且每臺計算機只知道自己的租賃。 DHCP協議中沒有任何內容可以查詢有關另一臺機器租賃的信息。您必須在每臺計算機上運行自己的軟件,然後與該軟件建立連接,並向其報告本地計算機的租賃情況。 –

回答

1

您可以通過實施一個只讀的DHCP服務器來做到這一點。客戶端將發送一個DHCPDISCOVER消息作爲您可以接收的廣播(在UDP端口67上)。響應的DHCP服務器將廣播回DHCPOFFER,包括客戶端的MAC地址,相關的IP信息和租用時間。如果客戶端接受這些設置,它現在將廣播一條DHCPREQUEST消息,以便您的只讀服務器知道客戶端將嘗試使用DHCPOFFER信息。您無法從服務器看到DHPCACK確認,但如果客戶端發生故障,它將發送一個新的DHCPDISCOVER。通過這種方式,您可以構建DHCP信息表,包括本地客戶端的租用時間。