怎样获得局域网中所有IP,和计算机名?
就像网上邻居一样! 问题点数:20、回复次数:5Top
1 楼webtt(tt)回复于 2002-03-27 12:40:11 得分 10
WNetOpenEnum,WNetEnumResource这两个函数实现列举计算机名称。
gethostbyname再用这个函数解析IP地址。Top
2 楼easyxu(Bryan)回复于 2002-03-27 12:50:36 得分 0
yTop
3 楼eliubo(黑鹰)回复于 2002-03-27 13:12:13 得分 0
WNetOpenEnum()的LPHANDLE lphEnum 参数怎么用?Top
4 楼wjh1014(wjh)回复于 2002-03-27 13:12:22 得分 10
以前的帖子里有,这里摘抄给你
#include <System.hpp>
#include <classes.hpp>
#include <winnetwk.h>
#include <winsock.h>
//获取网上邻居的列表,存储在串表中
bool EnumNetResource(TStrings *rcList,LPNETRESOURCE lpNR, DWORD dwScope,DWORD dwType)
{
HANDLE hEnum = 0;
DWORD dwResult = WNetOpenEnum(
dwScope, // scope of enumeration
dwType, // resource types to list
0, // enumerate all resources
lpNR, // pointer to resource structure (NULL at first time)
&hEnum // handle to resource
) ;
if( dwResult != NO_ERROR ) return false;
bool bRet=true;
DWORD dwEntries = 0xFFFFFFFF ; // enumerate all possible entries
NETRESOURCE NR[1024];
DWORD dwBuffer=1024*sizeof(NETRESOURCE);
while(1) {
dwResult = WNetEnumResource(
hEnum, // resource-handle
&dwEntries,
(LPVOID)NR,
&dwBuffer
) ;
if( dwResult == ERROR_NO_MORE_ITEMS ) break;
else if( dwResult != NO_ERROR ) { bRet=false; break;}
for(DWORD i = 0 ; i < dwEntries ; i++ ) {
if(NR[i].dwDisplayType==RESOURCEDISPLAYTYPE_SERVER) {
char *p=NR[i].lpRemoteName;
while(*p=='\\') p++;
if(*p) rcList->Add(p);
} else if((NR[i].dwUsage&RESOURCEUSAGE_CONTAINER)==
RESOURCEUSAGE_CONTAINER) {
bRet=EnumNetResource(rcList,&NR[i],dwScope,dwType);
if(bRet==false) break;
}
}
if(bRet==false) break;
}
WNetCloseEnum(hEnum) ;
return bRet;
}
//------获取某主机的IP地址,如果主机名为空,则返回本机的名和IP地址---------
AnsiString gethostip(AnsiString &host)
{
WSADATA wsaData;
AnsiString IP;
WSAStartup(MAKEWORD(2,0),&wsaData);
if(host.IsEmpty()) {
char hostname[128];
if(gethostname(hostname,128)!=0) return AnsiString("");
host=hostname;
}
try{
struct hostent *hp=gethostbyname(host.c_str());
IP=inet_ntoa(*(struct in_addr*)hp->h_addr_list[0]);
}
catch(...){
IP="";
}
WSACleanup();
return IP;
}Top
5 楼li_aiwu(小李子)回复于 2002-05-07 15:00:33 得分 0
收藏Top




