#include #include #include int main(int argc, char **argv) { int r; char buf[256], buf2[32]; struct addrinfo *ai, hints = { .ai_protocol = IPPROTO_TCP, .ai_flags = 0, .ai_family = AF_UNSPEC }; char *name = argc>1 ? argv[1][0] ? argv[1] : 0 : 0; char *serv = argc>2 ? argv[2] : 0; r = getaddrinfo(name, serv, &hints, &ai); if (r<0) printf("%s: %s\n", name, gai_strerror(r)); else for (; ai; ai = ai->ai_next) if (!getnameinfo(ai->ai_addr, ai->ai_addrlen, buf, sizeof buf, buf2, sizeof buf2, NI_NUMERICHOST|NI_NUMERICSERV)) printf("%s: %s %s %s %s %s\n", name?name:"NULL", ai->ai_canonname, buf, buf2, ai->ai_protocol == IPPROTO_TCP ? "tcp" : "udp", ai->ai_socktype == SOCK_STREAM ? "stream" : "dgram"); return 0; }