Der POSIX 1003.1g-Entwurf enthält keine zu getaddrinfo() inverse Funktion zur Ermittlung von Host- und Portnamen für gegebene binäre Adressen und Ports. [Gilligan 97] definiert dazu die Funktion getnameinfo():
int getnameinfo(const struct sockaddr *sa , size_t salen , char *host , size_t hostlen , char *serv , size_t servlen , int flags );
In sa wird eine sockaddr-Struktur übergeben, die die binären Host- und Portangaben enthält. In host bzw. serv wird der ermittelte Host- bzw. Portname zurückgeliefert, abhängig von in flags gesetzten Optionen. Im Beispiel wird die Funktion zweimal aufgerufen, um sowohl Namen als auch Nummern zu erhalten:
if (result = getnameinfo(ai->ai_addr, ai->ai_addrlen, hbuf[0], sizeof(hbuf[0]), sbuf[0], sizeof(sbuf[0]), 0)) { fprintf(stderr, "getnameinfo: %s\n", gai_strerror(result)); continue; }; if (result = getnameinfo(ai->ai_addr, ai->ai_addrlen, hbuf[1], sizeof(hbuf[1]), sbuf[1], sizeof(sbuf[1]), NI_NUMERICHOST | NI_NUMERICSERV)) { fprintf(stderr, "getnameinfo: %s\n", gai_strerror(result)); continue; }; printf("ai_addr: %s.%s(%s.%s)\n\n", hbuf[0], sbuf[0], hbuf[1], sbuf[1]);