查询局域网内在线ip与计算机名,获取局域网内在线的所有主机名及其IP地址解决方案...

当前位置:我的异常网» VC/MFC » 获取局域网内在线的所有主机名及其IP地址解决方案

获取局域网内在线的所有主机名及其IP地址解决方案

www.myexceptions.net  网友分享于:2013-02-02  浏览:689次

获取局域网内在线的所有主机名及其IP地址

获取局域网内在线的所有主机名及其IP地址

Author:swun911

blog.sina.com.cn/swun

偶想搜索到局域网内所有在线的主机并获得其地址,使用了API的WNetEnumResource和gethostbyname。实现倒是实现了,可就是特别的慢,请指教。不知道各位高手有什么妙招,请赐教!

My   Emai:56557833@qq.com

我实现该目的部分的代码如下:

//**************************************************************************************

//获取主机名

do

{

EnumLocal   =   (LPNETRESOURCE)   GlobalAlloc(   GPTR,   dwBuffer   )   ;

dwResult   =   WNetEnumResource(hEnum,&dwEntries,EnumLocal,&dwBuffer);

if(   dwResult   ==   NO_ERROR   )

{

int   kyy=0;

for(   register   DWORD   i   =   0   ;   i   <   dwEntries   ;   i++   )

{

CString   Enumname;

Enumname   =   EnumLocal[i].lpRemoteName;

Enumname   +=   "   ";

Enumname   +=EnumLocal[i].lpLocalName;

Enumname   +=   "   ";

Enumname   +=EnumLocal[i].lpComment;

CString   Filtrate   =   Enumname.Left(1);

if(Filtrate== '\\ ')

{

CString   Inputname,IPAddress;

Inputname=Enumname.Right(Enumname.GetLength()-2);//去掉 "\\ "

Inputname=Inputname.SpanExcluding( "   ");//去掉空格及其以后的部分

GetIPAddress(Inputname,IPAddress);

userinfo[kyy].h_name=Inputname;

userinfo[kyy].h_IPadd=IPAddress;

userinfo[kyy+1].h_name= "xxx ";

kyy++;

}

}

}

}   while(   dwResult   !=   ERROR_NO_MORE_ITEMS   );

//****************************************************************************

//IP地址

GetIPAddress(CString   &HostName,   CString   &IPAddress)

{

struct   hostent   FAR   *pIPHostEnt=gethostbyname(HostName);

if   (pIPHostEnt==NULL)

{

IPAddress=_T( "获取地址失败! ");

return   GetLastError();

}

LPSTR   IPAddr=pIPHostEnt-> h_addr_list[0];

if(IPAddr)

{

struct   in_addr   inAddr;

memmove(&inAddr,IPAddr,4);

IPAddress=inet_ntoa(inAddr);

if(IPAddress.IsEmpty())

{

IPAddress=_T( "没有取得IP ");

AfxMessageBox(IPAddress);

}

}

return   0;

}

------解决方案--------------------

WSADATA wsaData;

文章评论

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值