各位大虾,在网络当中如何才能得到本地以及其他的计算机的IP地址和计算机名。(最好有源代码)谢谢!!!!!! 我现在正在用VC++编写一个网络教学程序,不过不知道在网络当中如何才能得到本地以及其他的计算机的IP地址和计算机名。希望能够得到各位大虾的帮助,我将万分感激(最好有源代码)谢谢!!!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有一个枚举网络资源的API函数的不过名字我忘了,你查一下enumNETWORD之类的词吧好像跟这几个词有关的。 人民邮电出版社,VisualC++6.0实效编程百例,有你的问题(有源码) 你给email,我给你一个源码(哥们分少了点吧) //这个函数,在列举局域网机器的同时,也解析出IP地址bool EnumNetResource(LPNETRESOURCE lpNR, DWORD dwScope,DWORD dwType,CStringArray* hList){ //注意:hList是用来显示被列举出的机器名字的LIST HANDLE hEnum = 0; DWORD i; bool bRet=true; DWORD dwEntries = 0xFFFFFFFF ; // enumerate all possible entries NETRESOURCE NR[1024]; DWORD dwBuffer=1024*sizeof(NETRESOURCE); 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; while(1) { dwResult =WNetEnumResource(hEnum,&dwEntries,(LPVOID)NR,&dwBuffer); if(dwResult==ERROR_NO_MORE_ITEMS ) break; else { if(dwResult != NO_ERROR ) { bRet=false; break; } } for(i = 0 ; i < dwEntries ; i++ ) { if(NR[i].dwDisplayType==RESOURCEDISPLAYTYPE_SERVER) //(NR[i].dwUsage == RESOURCEUSAGE_CONTAINER&&NR[i].dwType == RESOURCETYPE_ANY) { char *p=NR[i].lpRemoteName; while(*p=='\\') p++; //这里,P指向列举出的资源!!!!!!!!!!! { u_long t,y,*lq;char lp[200]; u_char q[4]={0};//unsigned short n=nPort; HOSTENT *lphto;HOSTENT hto; t=y=0; lphto=gethostbyname(p); if(lphto!=NULL) { hto=*lphto; t=*((unsigned long*)hto.h_addr_list[0]); y=(u_long)ntohl(t); lq=(u_long *)q; *lq=t; sprintf(lp,"%s (%d.%d.%d.%d)",p,(u_long)q[0],(u_long)q[1],(u_long)q[2],(u_long)q[3]); } else sprintf(lp,"%s (不能解析的IP地址)",p); //ListBox_AddString(hList,lp); hList->Add(lp); } } else { if((NR[i].dwUsage&RESOURCEUSAGE_CONTAINER)==RESOURCEUSAGE_CONTAINER) { //bRet=EnumNetResource(&NR[i],dwScope,dwType,hList); //if(bRet==false) // break; } } } if(bRet==false) break; } WNetCloseEnum(hEnum) ; return bRet;} 怎么调用远程注入后DLL中的函数 如何实现控件的拖放? 如何将TreeView的背景变成透明? 问点菜鸟问题 计时器问题 哪里有MapInfor及相关资料的下载? 本人想写一个输入法子自己用,但不知道该怎么做,那位高人能给点意见? 谁有JPEGLIB2.Lib对应的JpegLib.h文件,在线等候,马上给分! 动态库和静态库的问题 请教WM_MOUSEHOVER和WM_MOUSELEAVE的用法? 请问VC里面用什么函数来创建文件,以及如何把char[6]里面的数字(中间有小数点,而且小数点位置不固定)转化成int 怎样实现驱动程序的自动安装
你查一下enumNETWORD之类的词吧好像跟这几个词有关的。
bool EnumNetResource(LPNETRESOURCE lpNR, DWORD dwScope,DWORD dwType,CStringArray* hList)
{
//注意:hList是用来显示被列举出的机器名字的LIST
HANDLE hEnum = 0;
DWORD i;
bool bRet=true;
DWORD dwEntries = 0xFFFFFFFF ; // enumerate all possible entries
NETRESOURCE NR[1024];
DWORD dwBuffer=1024*sizeof(NETRESOURCE);
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;
while(1)
{
dwResult =WNetEnumResource(hEnum,&dwEntries,(LPVOID)NR,&dwBuffer);
if(dwResult==ERROR_NO_MORE_ITEMS )
break;
else
{
if(dwResult != NO_ERROR )
{
bRet=false;
break;
}
}
for(i = 0 ; i < dwEntries ; i++ )
{
if(NR[i].dwDisplayType==RESOURCEDISPLAYTYPE_SERVER) //(NR[i].dwUsage == RESOURCEUSAGE_CONTAINER&&NR[i].dwType == RESOURCETYPE_ANY)
{
char *p=NR[i].lpRemoteName;
while(*p=='\\') p++;
//这里,P指向列举出的资源!!!!!!!!!!!
{
u_long t,y,*lq;char lp[200];
u_char q[4]={0};//unsigned short n=nPort;
HOSTENT *lphto;HOSTENT hto;
t=y=0;
lphto=gethostbyname(p);
if(lphto!=NULL)
{
hto=*lphto;
t=*((unsigned long*)hto.h_addr_list[0]);
y=(u_long)ntohl(t);
lq=(u_long *)q;
*lq=t;
sprintf(lp,"%s (%d.%d.%d.%d)",p,(u_long)q[0],(u_long)q[1],(u_long)q[2],(u_long)q[3]);
}
else
sprintf(lp,"%s (不能解析的IP地址)",p);
//ListBox_AddString(hList,lp);
hList->Add(lp);
}
}
else
{
if((NR[i].dwUsage&RESOURCEUSAGE_CONTAINER)==RESOURCEUSAGE_CONTAINER)
{
//bRet=EnumNetResource(&NR[i],dwScope,dwType,hList);
//if(bRet==false)
// break;
}
}
}
if(bRet==false)
break;
}
WNetCloseEnum(hEnum) ;
return bRet;
}