Reverse lookup, printing addresses Use getnameinfo() Always check errors Don't use inet_{ntoa,ntop} - they do not support scoped IPv6 address if (getnameinfo(sa, sa->sa_len, hbuf, sizeof(hbuf), sbuf, sizeof(sbuf), 0) != 0) printf("invalid\n"); printf("host=%s serv=%s\n", hbuf, sbuf); if (getnameinfo(sa, sa->sa_len, hbuf, sizeof(hbuf), sbuf, sizeof(sbuf), NI_NUMERICHOST|NI_NUMERICSERV) != 0) printf("invalid\n"); printf("host=%s serv=%s\n", hbuf, sbuf);