Reverse lookup and printing addresses Always use getnameinfo(). forget inet_{ntoa, ntop} do not forget to check errors. char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV]; 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);