test1.c 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #include "unp.h"
  2. void pr_ipv4(char **);
  3. int
  4. main(int argc, char **argv)
  5. {
  6. char *ptr, **pptr, **listptr, buf[INET6_ADDRSTRLEN];
  7. char *list[100];
  8. int i, addrtype, addrlen;
  9. struct hostent *hptr;
  10. while (--argc > 0) {
  11. ptr = *++argv;
  12. if ( (hptr = gethostbyname(ptr)) == NULL) {
  13. err_msg("gethostbyname error for host: %s: %s",
  14. ptr, hstrerror(h_errno));
  15. continue;
  16. }
  17. printf("official host name: %s\n", hptr->h_name);
  18. for (pptr = hptr->h_aliases; *pptr != NULL; pptr++)
  19. printf(" alias: %s\n", *pptr);
  20. addrtype = hptr->h_addrtype;
  21. addrlen = hptr->h_length;
  22. /* copy array of pointers, so we can call gethostbyaddr() */
  23. for (i = 0, listptr = hptr->h_addr_list; *listptr != NULL; listptr++) {
  24. list[i++] = *listptr;
  25. }
  26. list[i] = NULL;
  27. for (listptr = list; *listptr != NULL; listptr++) {
  28. printf("\taddress: %s\n",
  29. Inet_ntop(addrtype, *listptr, buf, sizeof(buf)));
  30. if ( (hptr = gethostbyaddr(*listptr, addrlen, addrtype)) == NULL)
  31. printf("\t\t(gethostbyaddr failed)\n");
  32. else if (hptr->h_name != NULL)
  33. printf("\t\tname = %s\n", hptr->h_name);
  34. else
  35. printf("\t\t(no hostname returned by gethostbyaddr)\n");
  36. printf("\t\tofficial host name: %s\n", hptr->h_name);
  37. for (pptr = hptr->h_aliases; *pptr != NULL; pptr++)
  38. printf("\t\talias: %s\n", *pptr);
  39. }
  40. }
  41. }