1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
   | #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <netdb.h>
  #define MAXLINE 64 int main(int argc, char **argv) {     struct addrinfo *p, *listp, hints;     char buf[MAXLINE];     int rc, flags;
      if (argc != 2) {         fprintf(stderr, "usage: %s <domain name>\n", argv[0]);         exit(0);     }     memset(&hints, 0, sizeof(struct addrinfo));     hints.ai_family = AF_INET;       hints.ai_socktype = SOCK_STREAM;       if ((rc = getaddrinfo(argv[1], NULL, &hints, &listp)) != 0) {         fprintf(stderr, "getaddrinfo error: %s\n", gai_strerror(rc));         exit(1);     }
      flags = NI_NUMERICHOST;       for (p = listp; p; p = p->ai_next) {           getnameinfo(p->ai_addr, p->ai_addrlen, buf, MAXLINE, NULL, 0, flags);         printf("%s\n", buf);     }
      freeaddrinfo(listp);
      exit(0); }
   |