大概的步骤如下 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; LPDHCP_CLIENT_INFO_ARRAY clientArray = NULL; DWORD PrefMaxClient = 65535; DWORD ClientsRead, ClientsTotal; DhcpEnumSubnetClients(wcIP, ip, &hRH, PrefMaxClient, &clientArray,&ClientsRead, &ClientsTotal); for (DWORD j = 0; j < ClientsRead; j ++) { //输出客户地址 DHCP_IP_ADDRESS clientIP = clientArray->Clients[j]->ClientIpAddress; //这个是主机机名, 宽字串的:clientArray->Clients[j]->ClientName //MAC地址:一般是6个 clientArray->Clients[j]->ClientHardwareAddress->Data } } } wangnan3
http://zhidao.baidu.com/question/43836243.html 2 怎样取消预编译头文件?~~~~~ 答案: 这里没装VC6``忘了那几个名字 你去project-setting,然后在第一个(或第二个)tab页,会看到左边有一个树,你选择对应要取消预编译头的文件,然后在右边,会看到一个combo box,选择process.. header``然后会有4个单选框,你选择第一个no...什么的就可以了 --------------------------------------------------------------- vc++IDE--->Project--->Setting--->c/c++--->Category--->PreCompiled Headers--->Not Use Precompiled Headers专家提供:回答者: 张琎 - 软件专家 1-16 10:02我来评论>>评价已经被关闭 目前有 0 个人评价 好50% (0) 不好50% (0) 相关内容 路由器安装设置向导 局域网某几台机子上不了网,从DHCP获取IP失败 明明可以从DHCP获取IP,为什么显示"DHCP Enabled........ 本地连接通过DHCP获取IP(192.168.200.61),无法登... 上不了网,本地连接提示DHCP获取IP地址失败。是什么... 查看同主题问题:分配 ip dhcp 其他回答 共 1 条//将CString 型IP地址在IPAddressCtrl中显示 CString strIP; char *name = strIP.GetBuffer(100); char *ip; PHOSTENT hostinfo; TRACE1("%d\n", sizeof(name)); if( gethostname (name , 100) == 0) { if((hostinfo = gethostbyname(name)) != NULL) { //这些就是获得IP的函数 ip = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list); strIP.ReleaseBuffer(); strIP = ip; } } DWORD dwIP; dwIP = inet_addr(strIP); unsigned char *pIP = (unsigned char*)&dwIP;