当前位置: 首页 > 学习 > 电脑学习 > 程序设计 > C++ > 网络通讯 > 正文

怎样搜索局域网上的计算机

http://www.zk168.com.cn  招考学习网 2006-4-11 6:00:15
-----------------------------------------------------------[交流]-[打印]-[发送]-[收藏]--
在一个局域网上,网络编程IP相关问题  

1.怎么搜索局域网上的计算机?  
2.怎样通过一个计算机的IP地址获得其网卡物理地址?  

例如,我的计算机为A,局域网上的有另外一台计算机为B,怎样在A上通过B的IP地址获取B的网卡物理地址?  

如何编程用C++Builder编程实现?


//------------来自JiShiPing(JSP季世平)的代码:---------------


#include    <winnetwk.h  >  
#include    <winsock2.h  >  
//---------------------------------------------------------------------------  
__fastcall  TForm1::TForm1(TComponent*  Owner)  
               :  TForm(Owner)  
{  
}  
//---------------------------------------------------------------------------  


//---------------------------------------------------------------------------  


void  __fastcall  TForm1::FormCreate(TObject  *Sender)  
{  
   TStrings  *netList=new  TStringList();  
   TListItem  *NewItem;  
   //  
   ListView1-  >Items-  >Clear();  
   Screen-  >Cursor=crHourGlass;  
   //  
   EnumNetResource(netList,NULL,RESOURCE_GLOBALNET,RESOURCETYPE_ANY);  

   for(int  i=0;i  <netList-  >Count;i++)  
   {  
     NewItem=ListView1-  >Items-  >Add();  
     NewItem-  >Caption=netList-  >Strings[i];  
     NewItem-  >SubItems-  >Add(gethostip(netList-  >Strings[i]));  
   }  
   Screen-  >Cursor=crDefault;  
   delete  netList;  
}  
//---------------------------------------------------------------------------  
bool  __fastcall  TForm1::EnumNetResource(TStrings  *rcList,LPNETRESOURCE  lpNR,  DWORD  dwScope,DWORD  dwType)  
{  
   HANDLE  hEnum  =  0;  //  resource-handle  
   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,&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)  
AnsiString  __fastcall  TForm1::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());  
     if(WSAGetLastError()==WSAHOST_NOT_FOUND)  
     {  
       IP=  "无法获取  ";  
       return  IP;  
     }  
     else  
     IP=inet_ntoa(*(struct  in_addr*)hp-  >h_addr_list[0]);  
     }  
   catch(...)  
   {  
     IP=  "  ";  
   }  
   WSACleanup();  
   return  IP;  
}  

-----------------------------------------------------------[交流]-[打印]-[发送]-[收藏]--
最新入库:
 
·实质、过程及意义——阿多尔诺“否定的辩证法”探微
·从Ontology的译名之争看哲学术语的翻译原则
·论马克思主义哲学经典的解释——解释学方法及其在马克
·中国哲学当前的核心与周边问题
·和合学与21世纪文化价值和科技
·中国文化的和合精神与21世纪
·宗教之间理当相互宽容
·上半个世纪的自由主义
·殷周至春秋时期神人关系之演进
·大学之道:构建以“三纲八目”为核心的道德修养体系
相关内容:
 
·浅谈计算机网络环境下的注册会计师审计
·计算机环境下审计风险的特征与对策研究
·中国网上广播的现状与前瞻
·110 kV电网计算机整定计算新方案—准专家系统模式
·无线局域网技术概述
·计算机系统分析员论文-企业集团的信息管理系统应用
·计算机系统分析员论文-工业控制的常规应用
·计算机系统分析员论文-银行业的应用2
·计算机系统分析员论文-数字图书馆类的应用
·计算机系统分析员论文-银行业的应用
网友点评:
 
会员名称:
密码:匿名 ·注册·忘记密码?
评论内容:
(最多300个字符)
  查看评论
友情提醒:
 1.库中的资料大都来自互联网、网友上传、各类书籍,在录入的过程中难免会出现错误,恳请网
 友来信指正!
 2.如果网友在本库中未能找到所需要的材料,请登陆到我们的论坛《招考学习网》版块!
 3.考友想加入招考学习网的编辑部,请发信到XueXiWang#Gmail.com(#改为@)附带个人简历
 4.如需转载请注明出处及作者,谢谢合作!
 5.如果您有更好的建议或意见请EMAIL:XueXiWang#Gmail.com (#改为@)
 6.凡标题中有注有“[NO]”字样均不含答案且答案整理中.
 7.如本库中转载文章涉及版权等问题,请相关网站或作者在两周内发邮件通知(EMAIL:  XueXiWang#Gmail.com (#改为@))我们,我们接到通知后立即删除该文章及链接!
你问我答 更多>>