/* $begin hostinfo */ #include "csapp.h" int main(int argc, char **argv) { struct addrinfo *p, *listp, hints; char abuf[MAXLINE]; char nbuf[MAXLINE]; int rc, aflags, nflags; if (argc != 2) { fprintf(stderr, "usage: %s \n", argv[0]); exit(0); } /* Get a list of addrinfo records */ memset(&hints, 0, sizeof(struct addrinfo)); #if 0 hints.ai_family = AF_INET; /* IPv4 only */ //line:netp:hostinfo:family #endif hints.ai_socktype = SOCK_STREAM; /* Connections only */ //line:netp:hostinfo:socktype if ((rc = getaddrinfo(argv[1], NULL, &hints, &listp)) != 0) { fprintf(stderr, "getaddrinfo error: %s\n", gai_strerror(rc)); exit(1); } /* Walk the list and display each IP address */ aflags = NI_NUMERICHOST; /* Display address string instead of domain name */ nflags = NI_NOFQDN; for (p = listp; p; p = p->ai_next) { Getnameinfo(p->ai_addr, p->ai_addrlen, abuf, MAXLINE, NULL, 0, aflags); Getnameinfo(p->ai_addr, p->ai_addrlen, nbuf, MAXLINE, NULL, 0, nflags); printf("%s (%s)\n", abuf, nbuf); } /* Clean up */ Freeaddrinfo(listp); exit(0); } /* $end hostinfo */