CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

怎样才能把整个网络已经使用的主机ip记录下来?

楼主mzjn(初学者)2006-03-04 15:05:34 在 VC/MFC / 基础类 提问

谢谢. 问题点数:20、回复次数:5Top

1 楼yuanbocsut(井冈星火)回复于 2006-03-04 15:32:28 得分 0

不懂!Top

2 楼bluewindyy(班班)回复于 2006-03-04 17:07:50 得分 0

你是指枚举当前局域网的IP吗  
  一般可以向每个IP发arp请求包   有返回的就算存活  
  不过可能有些防火墙会过滤Ping命令  
  http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=197104  
  Top

3 楼mzjn(初学者)回复于 2006-03-04 19:33:48 得分 0

不知道为什么,下边的代码连接出错.我用的是VC6.0  
  #include   <afxdisp.h>  
  #include   <winsock2.h>  
  #include<vector>  
  using   namespace   std;  
  void   main()  
  {  
   
                  DWORD       dwScope=RESOURCE_CONTEXT;  
                  HANDLE       hEnum;  
                  WNetOpenEnum(dwScope,NULL,NULL,NULL,&hEnum);  
                  if(hEnum)  
                  {  
                  DWORD       Count             =       0xFFFFFFFF;  
                  DWORD       BufferSize   =       2048;  
                  LPVOID       Buffer         =       new       char[2048];  
                  WNetEnumResource(hEnum,&Count,Buffer,&BufferSize);  
                  NETRESOURCE       *NetResource=NULL;  
                  NetResource       =       (NETRESOURCE*)Buffer;  
                  char       szHostName[255];  
                  unsigned       int       i;  
                  CString   strTemp;  
                  vector<CString>   m_List;  
                  for(i=0;i<BufferSize/sizeof(NETRESOURCE);i++,NetResource++)  
                  {  
            if(NetResource->dwUsage==RESOURCEUSAGE_CONTAINER&&  
                  NetResource->dwType==RESOURCETYPE_ANY)  
              {  
                  if(NetResource->lpRemoteName)  
                    {  
                                    CString       strFullName=NetResource->lpRemoteName;  
                                    if(0==strFullName.Left(2).Compare("\\\\"))  
                                    strFullName=strFullName.Right(strFullName.GetLength()-2);  
   
                                    gethostname(szHostName,strlen(szHostName));  
                                    struct   hostent   FAR*   host       =       gethostbyname(strFullName);  
                                    if(host==   NULL)       continue;  
                          strTemp.Format("%s",strFullName);  
                          m_List.push_back(strTemp);//       获得地址添加到列表  
                      }//if  
                }//if  
                  }//for  
                  delete       Buffer;  
   
                  }//if  
                  WNetCloseEnum(       hEnum       );  
   
          }Top

4 楼mzjn(初学者)回复于 2006-03-04 19:36:41 得分 0

下边这个也是一样的:  
  错误如下:  
  Linking...  
  请问如何快速枚举局域网内所有存活主机IP.OBJ   :   error   LNK2001:   unresolved   external   symbol   _WNetCloseEnum@4  
  请问如何快速枚举局域网内所有存活主机IP.OBJ   :   error   LNK2001:   unresolved   external   symbol   _WNetEnumResourceA@16  
  请问如何快速枚举局域网内所有存活主机IP.OBJ   :   error   LNK2001:   unresolved   external   symbol   _WNetOpenEnumA@20  
  nafxcwd.lib(thrdcore.obj)   :   error   LNK2001:   unresolved   external   symbol   __endthreadex  
  nafxcwd.lib(thrdcore.obj)   :   error   LNK2001:   unresolved   external   symbol   __beginthreadex  
  Debug/请问如何快速枚举局域网内所有存活主机IP.exe   :   fatal   error   LNK1120:   5   unresolved   externals  
  Error   executing   link.exe.  
   
  代码如下:  
  #include   <afxdisp.h>  
  #include   <winsock2.h>  
  int   main()  
  {  
  CString   strTemp;  
  //struct   hostent   *host;  
  struct   hostent   FAR   *   host;  
   
  struct   in_addr   *ptr;   //   获取IP地址的结构  
  DWORD   dwScope   =   RESOURCE_CONTEXT;  
     
   
  NETRESOURCE   *NetResource   =   NULL;//网络资源  
  HANDLE   hEnum;  
  WNetOpenEnum(   dwScope,   NULL,   NULL,   NULL,   &hEnum);  
   
  WSADATA   wsaData;  
  WSAStartup(MAKEWORD(1,1),&wsaData);  
  if   (   hEnum   )  
  {  
  DWORD   Count   =   0xFFFFFFFF;  
  DWORD   BufferSize   =   2048;  
  LPVOID   Buffer   =   new   char[2048];  
  WNetEnumResource(   hEnum,   &Count,   Buffer,   &BufferSize   );  
  NetResource   =   (NETRESOURCE*)Buffer;  
   
  char   szHostName[200];  
  for   (   unsigned   int   i   =   0;   i   <   BufferSize/sizeof(NETRESOURCE);i++,   NetResource++)  
  {  
  if   (   NetResource->dwUsage   ==   RESOURCEUSAGE_CONTAINER   &&  
    NetResource->dwType   ==   RESOURCETYPE_ANY   )  
  {  
  if   (   NetResource->lpRemoteName!=NULL   )  
  {  
  CString   strFullName   =   NetResource->lpRemoteName;  
  //LPTSTR   strFullName1=NetResource->lpRemoteName;  
  //CString   strFullName;  
  //strFullName.Format("%s",strFullName1);  
   
  if   (   0   ==   strFullName.Left(2).Compare("\\\\")   )//去掉前面的"\\"  
  strFullName   =   strFullName.Right(strFullName.GetLength()-2);  
   
  gethostname(   szHostName,   strlen(   szHostName   )   );  
  host   =   gethostbyname(strFullName);  
  if(host   ==   NULL)   continue;  
   
   
  ptr   =   (struct   in_addr   *)   host->h_addr_list[0];  
  //   211.40.35.76   分割成如下形式.  
  int   a   =   ptr->S_un.S_un_b.s_b1;   //   211  
  int   b   =   ptr->S_un.S_un_b.s_b2;   //   40  
  int   c   =   ptr->S_un.S_un_b.s_b3;   //   35  
  int   d   =   ptr->S_un.S_un_b.s_b4;   //   76  
  strTemp.Format("%s   -->   %d.%d.%d.%d",strFullName,a,b,c,d);  
  //AfxMessageBox(strTemp);//获得一个就弹出一个  
  printf("%s",strTemp);  
   
  }//if  
  }//if  
  }//for  
  delete   Buffer;  
  WNetCloseEnum(   hEnum   );  
  }  
  WSACleanup();  
   
  return   1;  
   
  }  
  Top

5 楼mzjn(初学者)回复于 2006-03-04 20:05:17 得分 0

挺急的,那位高手可以帮帮忙.Top

相关问题

  • 怎么才能得到LAN内主机的全部IP.
  • 知道对方的ip,怎么才能得到对方的主机名(hostname)?
  • 同一主机的两台机子,怎么才能使两台机子的IP不同呢?
  • 在网吧上网怎样才能看到主机的IP?我又怎样才能连接到网吧内部的机子呢?
  • 各位大哥:怎样才能将访问我网页的人的IP及url记录下来?
  • 无法获取主机IP
  • 怎么才能高效插入记录??
  • 高分赠英雄!请问怎样才能获取主机名??
  • 用insert into语句插入记录时怎样才能加入空记录?
  • 能否使用IP网络的主机访问IPX网络的主机?

关键词

  • 主机
  • 局域网
  • strfullname
  • netresource
  • henum
  • szhostname
  • lpremotename
  • un
  • dwscope
  • strtemp

得分解答快速导航

  • 帖主:mzjn

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo