⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getipandhost.cpp

📁 能够比较迅速的获取局域网内的主机名和对应的IP地址
💻 CPP
字号:
#include   <windows.h>   
#include   <Winnetwk.h>   
#include   <stdio.h>   
#pragma   comment(lib,   "Ws2_32.lib")   
#pragma   comment(lib,   "Mpr.lib")   
    
  BOOL GetIpAddress(char *hostname)   
      {   
              HOSTENT *lpHost=NULL;   
                        struct sockaddr_in dest;   
    
              lpHost = gethostbyname(hostname);   
              if   (lpHost ==NULL)   
              {   
                    printf("gethostbyname failed: %d", WSAGetLastError());   
              }   
              else   
              {   
                    for(int   i=0;   lpHost->h_addr_list[i]   !=   NULL   ;i++)   
                    {   
                          memcpy(&(dest.sin_addr),   lpHost->h_addr_list[i],   
                                        lpHost->h_length);   
                          printf("IP   address   is:   %s",   
                                            inet_ntoa(dest.sin_addr));   
                    }   
    
              }   
      return   TRUE;   
  }   
  BOOL   WINAPI   EnumerateFunc   (LPNETRESOURCE   lpnr)   
  {   
  HANDLE   hEnum;   
  DWORD   dwIndex,dwResult,dwBufferSize=16384,dwNumEntries =0xFFFFFFFF;//   Enumerate   all   possible   entries.   
  LPNETRESOURCE   lpnrLocal;  //   Pointer to enumerated structures.   
    
  dwResult = WNetOpenEnum   (   
  RESOURCE_GLOBALNET,   //All resources on the network   
  RESOURCETYPE_ANY,       //All resources     
  0,                                     //   Enumerate   all   resources.   
  lpnr,                               //   The   container   to   enumerate   
  &hEnum);                         //   Handle   to   resource   
  if   (dwResult   !=   ERROR_SUCCESS)     
  return   FALSE;   
    
  //   Allocate   memory   for   NETRESOURCE   structures.   
  if   (!(lpnrLocal   =   (LPNETRESOURCE)   LocalAlloc   (LPTR,   dwBufferSize)))   
  printf("Not   enough   memory");   
    
  do     
  {   
  dwResult   =   WNetEnumResource   (   
  hEnum,                             //   Resource   handle   
  &dwNumEntries,             //   Number   of   entries   
  lpnrLocal,                     //   LPNETRESOURCE   
  &dwBufferSize);           //   Buffer   size   
    
  if   (dwResult   ==   ERROR_SUCCESS)     
  {   
  for   (dwIndex   =   0;   dwIndex   <   dwNumEntries;   dwIndex++)   
  {   
  printf("\nRemote   Name:%s   Comment:   %s",   lpnrLocal[dwIndex].lpRemoteName,   
  lpnrLocal[dwIndex].lpComment);   
  GetIpAddress(lpnrLocal[dwIndex].lpRemoteName+2);   
    
  }   
  }   
  else   if   (dwResult   !=   ERROR_NO_MORE_ITEMS)     
  break;   
  }     
  while(dwResult   !=   ERROR_NO_MORE_ITEMS);   
  LocalFree   (lpnrLocal);   
  WNetCloseEnum   (hEnum);   
  return   TRUE;   
  }     
    
  int   main(int   argc,   char*   argv[])   
  {   
  WORD   wVersionRequested;   
  WSADATA   wsaData;   
  int   err;   
  wVersionRequested   =   MAKEWORD(   2,   2   );   
  err   =   WSAStartup(   wVersionRequested,   &wsaData   );   
  if   (   err   ==   0   )     
  {   
  NETRESOURCE   nr;   
  nr.dwScope   =   RESOURCE_GLOBALNET;   
  nr.dwType   =   RESOURCETYPE_DISK;       
  nr.dwUsage   =   RESOURCEUSAGE_CONTAINER;   
  nr.lpLocalName   =   TEXT("");   
  nr.lpRemoteName   =   TEXT("MyDomain");//这里改为你的域名   
  nr.lpComment   =   TEXT("");   
  nr.lpProvider   =   TEXT("");   
  EnumerateFunc   (&nr);     
  }   
  return   0;   
  }   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -