.\" -*- coding: UTF-8 -*- '\" t .\" %%%LICENSE_START(PUBLIC_DOMAIN) .\" This page is in the public domain. .\" %%%LICENSE_END .\" .\" Almost all details are from RFC 2553. .\" .\" 2004-12-14, mtk, Added EAI_OVERFLOW error .\" 2004-12-14 Fixed description of error return .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH getnameinfo 3 "20 lipca 2023 r." "Linux man\-pages 6.05.01" .SH NAZWA getnameinfo \- tłumaczenie adresu na nazwę w sposób niezależny od protokołu .SH BIBLIOTEKA Standardowa biblioteka C (\fIlibc\fP, \fI\-lc\fP) .SH SKŁADNIA .nf \fB#include \fP \fB#include \fP .PP \fBint getnameinfo(const struct sockaddr *restrict \fP\fIaddr\fP\fB, socklen_t \fP\fIaddrlen\fP\fB,\fP \fB char \fP\fIhost\fP\fB[_Nullable restrict .\fP\fIhostlen\fP\fB],\fP \fB socklen_t \fP\fIhostlen\fP\fB,\fP \fB char \fP\fIserv\fP\fB[_Nullable restrict .\fP\fIservlen\fP\fB],\fP \fB socklen_t \fP\fIservlen\fP\fB,\fP \fB int \fP\fIflags\fP\fB);\fP .fi .PP .RS -4 Wymagane ustawienia makr biblioteki glibc (patrz \fBfeature_test_macros\fP(7)): .RE .PP \fBgetnameinfo\fP(): .nf Since glibc 2.22: _POSIX_C_SOURCE >= 200112L glibc 2.21 and earlier: _POSIX_C_SOURCE .fi .SH OPIS Funkcja \fBgetnameinfo\fP() jest odwrotnością funkcji \fBgetaddrinfo\fP(3): tłumaczy, w sposób niezależny od protokołu, adres gniazda na odpowiadające mu nazwę komputera i usługi. Łączy w sobie funkcjonalność funkcji \fBgethostbyaddr\fP(3) oraz \fBgetservbyport\fP(3), ale w przeciwieństwie do nich \fBgetnameinfo\fP() jest bezpieczna dla wątków i pozwala programowi wyeliminować zależności od IPv4\-kontra\-IPv6. .PP Argument \fIaddr\fP jest wskaźnikiem do ogólnej struktury adresu gniazda (typu \fIsockaddr_in\fP lub \fIsockaddr_in6\fP) o rozmiarze \fIaddrlen\fP, która przechowuje wejściowy adres IP i numer portu. Argumenty \fIhost\fP i \fIport\fP są wskaźnikami do zaalokowanych przez program wywołujący tę funkcję buforów (odpowiednio o rozmiarach \fIhostlen\fP i \fIservlen\fP), w których \fBgetnameinfo\fP() umieści zakończone NULL\-em łańcuchy znaków zawierające odpowiednio nazwę komputera i nazwy usług. .PP Funkcja wywołująca może określić, że nazwa komputera (lub nazwa serwisu) nie jest potrzebna, przez przekazanie wartości NULL w argumencie \fIhost\fP (lub \fIserv\fP) albo przez podanie 0 w parametrze \fIhostlen\fP (lub \fIservlen\fP). Jednakże co najmniej jeden z podanych parametrów (nazwa komputera lub nazwa serwisu) musi być ustawiony. .PP Argument \fIflags\fP zmienia zachowanie \fBgetnameinfo\fP() w następujący sposób: .TP \fBNI_NAMEREQD\fP Jeśli ustawiono, to w razie nieznalezienia nazwy komputera zwracany jest błąd. .TP \fBNI_DGRAM\fP If set, then the service is datagram (UDP) based rather than stream (TCP) based. This is required for the few ports (512\[en]514) that have different services for UDP and TCP. .TP \fBNI_NOFQDN\fP Jeżeli ustawiono, to zwracana jest tylko lokalna część nazwy komputera, a nie jego pełną domenowa nazwa sieciowa. .TP \fBNI_NUMERICHOST\fP .\" For example, by calling .\" .BR inet_ntop () .\" instead of .\" .BR gethostbyaddr (). .\" POSIX.1-2001 TC1 has NI_NUMERICSCOPE, but glibc doesn't have it. Jeśli ustawiono, to nazwa komputera jest zwracana w formie numerycznej. (Może się to również zdarzyć wtedy, gdy nie ustawiono tej flagi i nie można znaleźć nazwy komputera). .TP \fBNI_NUMERICSERV\fP Jeśli ustawiono, to nazwa komputera jest zwracana w formie numerycznej. (Może się to również zdarzyć wtedy, gdy nie ustawiono tej flagi i nie można znaleźć nazwy komputera). .SS "Rozszerzenia getnameinfo() dotyczące międzynarodowych nazw domen" Począwszy do wersji 2.3.4 biblioteki glibc, \fBgetnameinfo\fP() został rozszerzony i pozwala na przezroczystą konwersję nazw komputerów do i z formatu międzynarodowych nazw domenowych (Internationalized Domain Name \(em IDN; patrz RFC\ 3490, \fIInternationalizing Domain Names in Applications (IDNA)\fP). Zostały zdefiniowane trzy nowe flagi: .TP \fBNI_IDN\fP Jeśli użyto tego znacznika, to nazwa znaleziona przez proces wyszukiwania jest konwertowana z formatu IDN na kodowanie zgodne z bieżącymi ustawieniami językowymi. Nazwy składające się wyłącznie ze znaków ASCII nie są zmieniane, co pozwala na bezproblemowe używanie tego znacznika w istniejących programach i środowiskach. .TP \fBNI_IDN_ALLOW_UNASSIGNED\fP, \fBNI_IDN_USE_STD3_ASCII_RULES\fP Ustawienie tych znaczników włączy odpowiednio znaczniki IDNA_ALLOW_UNASSIGNED (zezwala na używanie nieprzypisanych znaków Unikodu) i IDNA_USE_STD3_ASCII_RULES (upewnia się, że zwracana nazwa komputera jest zgodna ze standardem STD3), które będą używane podczas obsługi IDNA. .SH "WARTOŚĆ ZWRACANA" .\" FIXME glibc defines the following additional errors, some which .\" can probably be returned by getnameinfo(); they need to .\" be documented. .\" .\" #ifdef __USE_GNU .\" #define EAI_INPROGRESS -100 /* Processing request in progress. */ .\" #define EAI_CANCELED -101 /* Request canceled. */ .\" #define EAI_NOTCANCELED -102 /* Request not canceled. */ .\" #define EAI_ALLDONE -103 /* All requests done. */ .\" #define EAI_INTR -104 /* Interrupted by a signal. */ .\" #define EAI_IDN_ENCODE -105 /* IDN encoding failed. */ .\" #endif W przypadku powodzenia zwracane jest 0, a nazwy komputera i usług, jeśli ich zażądano, są wypełniane łańcuchami znaków zakończonymi NULL\-em. Nazwy te mogą zostać obcięte, tak aby zmieściły się w podanych długościach bufora. W razie błędu zwracany jest jeden z poniższych niezerowych kodów błędu: .TP \fBEAI_AGAIN\fP Obecnie nie można znaleźć nazwy. Proszę spróbować później. .TP \fBEAI_BADFLAGS\fP Argument \fIflags\fP ma niepoprawną wartość. .TP \fBEAI_FAIL\fP Wystąpił błąd krytyczny. .TP \fBEAI_FAMILY\fP Nieznana rodzina adresów lub długość adresu nie jest odpowiednia dla podanej rodziny. .TP \fBEAI_MEMORY\fP Brak pamięci. .TP \fBEAI_NONAME\fP Nie można rozwinąć nazwy dla podanych parametrów. Ustawiono \fBNI_NAMEREQD\fP, a nie można znaleźć nazwy komputera albo nie zażądano ani nazwy komputera, ani nazwy serwisu. .TP \fBEAI_OVERFLOW\fP Bufor, na który wskazywał parametr \fIhost\fP lub \fIserv\fP, był za mały. .TP \fBEAI_SYSTEM\fP Wystąpił błąd systemowy. Numer błędu można znaleźć w zmiennej \fIerrno\fP. .PP Funkcja \fBgai_strerror\fP(3) przekształca te kody błędów w komunikat zrozumiały dla człowieka, więc jest odpowiednia do raportowania błędów. .SH PLIKI \fI/etc/hosts\fP .br \fI/etc/nsswitch.conf\fP .br \fI/etc/resolv.conf\fP .SH ATRYBUTY Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Interfejs Atrybut Wartość T{ .na .nh \fBgetnameinfo\fP() T} Bezpieczeństwo wątkowe MT\-bezpieczne env locale .TE .sp 1 .SH STANDARDY POSIX.1\-2008. RFC\ 2553. .SH HISTORIA glibc 2.1. POSIX.1\-2001. .PP Before glibc 2.2, the \fIhostlen\fP and \fIservlen\fP arguments were typed as \fIsize_t\fP. .SH UWAGI Aby pomóc programiście w wyborze odpowiedniego rozmiaru buforów, w \fI\fP zdefiniowano stałe .PP .in +4n .EX #define NI_MAXHOST 1025 #define NI_MAXSERV 32 .EE .in .PP Od glibc 2.8 powyższe definicje są dostępne, jeśli zdefiniowano odpowiednie makro, mianowicie: \fB_GNU_SOURCE\fP, \fB_DEFAULT_SOURCE\fP (od glibc 2.19) lub (w wersjach glibc do 2.19 włącznie) \fB_BSD_SOURCE\fP lub \fB_SVID_SOURCE\fP. .PP Pierwsza z nich jest stałą \fBMAXDNAME\fP zdefiniowaną w pliku nagłówkowym \fI\fP z nowszych wersji BIND\-a. Druga jest zgadywaniem opartym na liście serwisów w bieżącym RFC dotyczącym przypisanych numerów (Assigned Numbers RFC). .SH PRZYKŁADY Następujący kod próbuje pobrać numeryczną nazwę komputera i nazwę usługi dla podanego adresu gniazda. Proszę zauważyć, że nie ustawiono na sztywno żadnej rodziny adresów. .PP .in +4n .EX 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\en", hbuf, sbuf); .EE .in .PP Następująca wersja sprawdza, czy adres gniazda ma odwrotne mapowanie adresu. .PP .in +4n .EX 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\en", hbuf); .EE .in .PP Przykładowy program używający \fBgetnameinfo\fP() można znaleźć w \fBgetaddrinfo\fP(3). .SH "ZOBACZ TAKŻE" \fBaccept\fP(2), \fBgetpeername\fP(2), \fBgetsockname\fP(2), \fBrecvfrom\fP(2), \fBsocket\fP(2), \fBgetaddrinfo\fP(3), \fBgethostbyaddr\fP(3), \fBgetservbyname\fP(3), \fBgetservbyport\fP(3), \fBinet_ntop\fP(3), \fBhosts\fP(5), \fBservices\fP(5), \fBhostname\fP(7), \fBnamed\fP(8) .PP R.\& Gilligan, S.\& Thomson, J.\& Bound and W.\& Stevens, \fIBasic Socket Interface Extensions for IPv6\fP, RFC\ 2553, marzec 1999. .PP Tatsuya Jinmei i Atsushi Onoe, \fIAn Extension of Format for IPv6 Scoped Addresses\fP, szkic internetowy, prace trwają .UR ftp://ftp.ietf.org\:/internet\-drafts\:/draft\-ietf\-ipngwg\-scopedaddr\-format\-02.txt .UE . .PP Craig Metz, \fIProtocol Independence Using the Sockets API\fP, Proceedings of the freenix track: Coroczna techniczna konferencja USENIX 2000, czerwiec 2000 .ad l .UR http://www.usenix.org\:/publications\:/library\:/proceedings\:/usenix2000\:/freenix\:/metzprotocol.html .UE . .PP .SH TŁUMACZENIE Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Robert Luberda i Michał Kułach . .PP Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License w wersji 3 .UE lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI. .PP Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej .MT manpages-pl-list@lists.sourceforge.net .ME .