求获取DHCP已分配的IP

来源:百度知道 编辑:UC知道 时间:2024/05/30 17:35:44
小妹欲编写一个运行在Windows Server 2003上的VC程序,用于获取该DHCP服务器启动后分配给客户端的IP地址(

有哪些IP被使用)。
请各位大侠多多帮忙,最好有源码,先在此谢过!

大概的步骤如下

1.获得子网掩码和gateway IP地址
2.AND操作获得局域网IP启示段,OR操作获得最大范围
3.向这个区域的每个IP,发送ARP(地址解析协议),获得的计算机会返回给你消息
4.至于如何发送ARP,window下面提供了SendARP interface,也可以使用第3方 driver

根据这个流程,对应google搜集资料,可以实现
---------------------------------------------------------------

先用
DhcpEnumSubnets 枚举子网, 会有很多。

wchar_t wcIP[255];
//把dhcp主机的IP放在wcIP中
DHCP_RESUME_HANDLE hResumeHandle = 0;
DWORD PrefMax = 255;//预计的最大租约个数
DWORD dwRead;
DWORD dwTotal;
LPDHCP_IP_ARRAY IPArray = NULL;

DWORD dwRet ;
dwRet = DhcpEnumSubnets(wcIP, &hResumeHandle, PrefMax, &IPArray , &dwRead, &dwTotal);

然后在子网的基础上, 用DhcpEnumSubnetClients枚举租约

for (DWORD i = 0; i < dwRead; i ++)
{
DWORD ip = IPArray->Elements[i];//子网地址

//str.Format("(%d) IP = %s\n", i, IP2Str(htonl(ip)));
//AfxMessageBox(str);

DHCP_RESUME_HANDLE hRH = 0;
LPDHC