Hi, >>>>> On Tue, 3 May 2005 18:39:10 +0300 >>>>> Sergey <[EMAIL PROTECTED]> said:
fenix> //get local address - local address is 192.168.0.250 fenix> if ((gaierr = getaddrinfo(argv[1], argv[2], &hints, &localaddr)) != 0) fenix> errx(1, "%s port %s: %s", argv[1], argv[2], gai_strerror(gaierr)); You need to initialize hints before calling getaddrinfo(3). fenix> inet_ntop(la->ai_family, la->ai_addr->sa_data, buf, sizeof(struct sockaddr)); The usage of inet_ntop(3) is wrong. It should be something like: #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <err.h> #include <netdb.h> #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char **argv) { struct addrinfo hints, *la, *localaddr; char buf[46]; int gaierr=0; //get local address - local address is 192.168.0.250 bzero(&hints, sizeof(hints)); hints.ai_flags = AI_PASSIVE; hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; if ((gaierr = getaddrinfo(argv[1], argv[2], &hints, &localaddr)) != 0) errx(1, "%s port %s: %s", argv[1], argv[2], gai_strerror(gaierr)); for (la = localaddr; la; la = la->ai_next) { switch (la->ai_family) { case AF_INET: inet_ntop(la->ai_family, &((struct sockaddr_in *)la->ai_addr)->sin_addr, buf, sizeof(buf)); break; case AF_INET6: inet_ntop(la->ai_family, &((struct sockaddr_in6 *)la->ai_addr)->sin6_addr, buf, sizeof(buf)); break; default: continue; } fprintf(stderr, "Address: %s\n", buf); } return 0; } You can use getnameinfo(3) to simplify usage of inet_ntop(3). Sincerely, -- Hajimu UMEMOTO @ Internet Mutual Aid Society Yokohama, Japan [EMAIL PROTECTED] [EMAIL PROTECTED],jp.}FreeBSD.org http://www.imasy.org/~ume/ _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[EMAIL PROTECTED]"