getnameinfo(3) Library Functions Manual getnameinfo(3) getnameinfo - LIBRARY Standard C library (libc, -lc) #include #include int getnameinfo(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(): Since glibc 2.22: _POSIX_C_SOURCE >= 200112L glibc 2.21 and earlier: _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, . Craig Metz, Protocol Independence Using the Sockets API, freenix: 2000 USENIX , 2000 . Azamat Hackimov , Dmitry Bolkhovskikh , Vladislav , Yuri Kozlov ; GNU 3 , . . , , . Linux man-pages 6.06 31 2023 . getnameinfo(3)