How to Display all the IP Address in the Listbox using VC++

Posted on 2004-08-17
Medium Priority
Last Modified: 2013-11-20
Hi All,

    Iam doing socket programming in vc++ in that  I want to display all the IP Address in the domain using VC++ any body have idea for this.
Thanks in Advance

Question by:SueshPadmanabhan
1 Comment
LVL 14

Accepted Solution

wayside earned 200 total points
ID: 11823462
Use  NetQueryDisplayInformation() to enumerate the domain and gethostbyname() to get the ip address, inet_ntoa() to print it.

This code is derived from an MSDN sample:

#define UNICODE
#include <windows.h>
#include <stdio.h>
#include <lm.h>

void main( int argc, char *argv[ ] )
   WORD wVersionRequested;
   WSADATA wsaData;
   int err;
   wVersionRequested = MAKEWORD( 2, 2 );
   err = WSAStartup( wVersionRequested, &wsaData );
   DWORD res, dwRec, i = 0;
   // You can pass a NULL or empty string
   //  to retrieve the local information.
   TCHAR szServer[255]=TEXT("");

   if(argc > 1)
      // Check to see if a server name was passed;
      //  if so, convert it to Unicode.
      MultiByteToWideChar(CP_ACP, 0, argv[1], -1, szServer, 255);

   do // begin do
      // Call the NetQueryDisplayInformation function;
      //   specify information level 2 (individual machine information).
      res = NetQueryDisplayInformation(szServer, 2, i, 1000, MAX_PREFERRED_LENGTH, &dwRec, (PVOID *)&pBuff);
      // If the call succeeds,
      if((res==ERROR_SUCCESS) || (res==ERROR_MORE_DATA))
         p = pBuff;
            char name[256];
            sprintf(name, "%S", p->usri2_name); // convert from unicode
            name[strlen(name)-1] = 0; // get rid of trailing '$'
            struct hostent * he = gethostbyname(name);
            if (he) {
              struct sockaddr_in sa;

              printf("Name: %s IP addr: %s\n",name,  inet_ntoa(sa.sin_addr));
            else {
              printf("Name: %s IP addr: %s\n",name,  "NULL");

            // If there is more data, set the index.
            i = p->usri2_next_index;
         // Free the allocated memory.
         printf("Error: %u\n", res);
   // Continue while there is more data.
   } while (res==ERROR_MORE_DATA); // end do

Featured Post

Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

This is to be the first in a series of articles demonstrating the development of a complete windows based application using the MFC classes.  I’ll try to keep each article focused on one (or a couple) of the tasks that one may meet.   Introductio…
Introduction: Database storage, where is the exe actually on the disc? Playing a game selected randomly (how to generate random numbers).  Error trapping with try..catch to help the code run even if something goes wrong. Continuing from the seve…
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
Through the video, you can check the migration process of Outlook PST file to PDF. Kernel for Outlook to PDF tool can convert Outlook emails with all attributes like Subject, To, From, Cc, Bcc and other folders such as Inbox, Outbox, Sent Items, Jun…

627 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question