#include #include #include #include #include int main(int argc, char **argv) { int i; struct addrinfo *res, *c; struct addrinfo hint; char *node, *serv; int ret; memset(&hint, 0, sizeof(hint)); hint.ai_flags = AI_CANONNAME; node = serv = NULL; if(argc > 1) node = argv[1]; if(argc > 2) serv = argv[2]; if(ret = getaddrinfo(node, serv, &hint, &res)) { fputs(gai_strerror(ret), stderr); fputc('\n', stderr); return(1); } for(c = res; c != NULL; c = c->ai_next) { printf("%x %i %i %i %s\n", c->ai_flags, c->ai_family, c->ai_socktype, c->ai_protocol, c->ai_canonname); for(i = 0; i < c->ai_addrlen; i++) { printf("%02x ", (int)(((unsigned char *)c->ai_addr)[i])); if(i & 0xf == 0) printf("\n"); } printf("\n\n"); } freeaddrinfo(res); return(0); } /* * Local Variables: * compile-command: "gcc -g -o addrtest addrtest.c" * End: */