getnameinfo(3) Library Functions Manual getnameinfo(3) getnameinfo - C (libc, -lc) #include #include int getnameinfo(socklen_t hostlen, socklen_t servlen; const struct sockaddr *restrict addr, socklen_t addrlen, char host[_Nullable restrict hostlen], socklen_t hostlen, char serv[_Nullable restrict servlen], socklen_t servlen, int flags); glibc (. feature_test_macros(7)): getnameinfo(): glibc 2.22: _POSIX_C_SOURCE >= 200112L glibc 2.21 : _POSIX_C_SOURCE getnameinfo() , getaddrinfo(3); , , . gethostbyaddr(3) getservbyport(3), getnameinfo() IPv4 IPv6. addr -- ( sockaddr_in sockaddr_in6) addrlen, IP- . host serv ( hostlen servlen, ), getnameinfo() ( null), , . , ( ) , host ( serv) NULL hostlen ( servlen) 0. , , , . flags getnameinfo() : NI_NAMEREQD , , . NI_DGRAM If set, then the service is datagram (UDP) based rather than stream (TCP) based. This is required for the few ports (512-514) that have different services for UDP and TCP. NI_NOFQDN , (FQDN) . NI_NUMERICHOST , ( , , ). NI_NUMERICSERV , ( , , ). getnameinfo() glibc 2.3.4, getnameinfo() (IDN) ( RFC 3490, Internationalizing Domain Names in Applications (IDNA)). : NI_IDN , IDN . ASCI- , - . NI_IDN_ALLOW_UNASSIGNED NI_IDN_USE_STD3_ASCII_RULES IDNA_ALLOW_UNASSIGNED ( ) IDNA_USE_STD3_ASCII_RULES ( STD3) IDNA. 0, ( null) ( ) . : EAI_AGAIN . . EAI_BADFLAGS flags . EAI_FAIL . EAI_FAMILY , . EAI_MEMORY . EAI_NONAME . NI_NAMEREQD , . EAI_OVERFLOW , host serv . EAI_SYSTEM . errno. gai_strerror(3) , . /etc/hosts /etc/nsswitch.conf /etc/resolv.conf attributes(7). +----------------------------+----------------------------------------------------------+--------------------------+ | | | | +----------------------------+----------------------------------------------------------+--------------------------+ |getnameinfo() | | MT-Safe env locale | +----------------------------+----------------------------------------------------------+--------------------------+ POSIX.1-2008. RFC 2553. glibc 2.1. POSIX.1-2001. Before glibc 2.2, the hostlen and servlen arguments were typed as size_t. #define NI_MAXHOST 1025 #define NI_MAXSERV 32 glibc 2.8, , : _GNU_SOURCE, _DEFAULT_SOURCE ( glibc 2.19) ( glibc 2.19 ) _BSD_SOURCE _SVID_SOURCE. -- MAXDNAME BIND. -- , RFC <>. . , . struct sockaddr *addr; /* input */ socklen_t addrlen; /* input */ char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV]; if (getnameinfo(addr, addrlen, hbuf, sizeof(hbuf), sbuf, sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV) == 0) printf("host=%s, serv=%s\n", hbuf, sbuf); , . struct sockaddr *addr; /* input */ socklen_t addrlen; /* input */ char hbuf[NI_MAXHOST]; if (getnameinfo(addr, addrlen, hbuf, sizeof(hbuf), NULL, 0, NI_NAMEREQD)) printf("could not resolve hostname"); else printf("host=%s\n", hbuf); , getnameinfo(), getaddrinfo(3). accept(2), getpeername(2), getsockname(2), recvfrom(2), socket(2), getaddrinfo(3), gethostbyaddr(3), getservbyname(3), getservbyport(3), inet_ntop(3), hosts(5), services(5), hostname(7), named(8) R. Gilligan, S. Thomson, J. Bound and W. Stevens, Basic Socket Interface Extensions for IPv6, RFC 2553, March 1999. Tatsuya Jinmei and Atsushi Onoe, An Extension of Format for IPv6 Scoped Addresses, internet draft, work in progress . Craig Metz, Protocol Independence Using the Sockets API, freenix: 2000 USENIX , 2000 . () Azamat Hackimov , Dmitry Bolkhovskikh , Vladislav , Yuri Kozlov ; GNU (GNU General Public License - GPL, 3 ) , - . - , , () () () . Linux man-pages 6.18 25 2025 . getnameinfo(3)