/*****************************************************************************/ /* Simple Resolving Program */ /* */ /* The client get the following input: */ /* * Name of the entity we want to get details about */ /* */ /* */ /* */ /* */ /* Process: */ /* The program issues resolving procedure (gethostbyname) and the */ /* addresses returned are printed on the screen. */ /* */ /* */ /* */ /* */ /* */ /* The source is taken from Beej's Guide to Network Programming */ /* */ /* */ /* */ /*****************************************************************************/ #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <netdb.h> #include <sys/types.h> #include <netinet/in.h> #include <sys/socket.h> #include <sys/utsname.h> int main(int argc, char **argv) { char *ptr; /* Pointer for the address list */ char **pptr; /* Pointer for the alias list */ struct hostent *hptr; /* hostentry struct */ char str[INET_ADDRSTRLEN]; /* IP (v4) address length */ while (--argc > 0) { ptr = *++argv; if ( (hptr = gethostbyname(ptr)) == NULL) { printf("gethostbyname error for host: %s: %s\n",ptr, hstrerror(h_errno)); continue; } printf("official hostname: %s\n", hptr->h_name); for (pptr = hptr->h_aliases; *pptr != NULL; pptr++) printf("\talias: %s\n", *pptr); switch (hptr->h_addrtype) { case AF_INET: pptr = hptr->h_addr_list; for ( ; *pptr != NULL; pptr++) printf("\taddress: %s\n", inet_ntop(hptr->h_addrtype, *pptr, str, sizeof(str))); break; default: perror("unknown address type"); break; } } exit(0); }