getpeername(2) System Calls Manual getpeername(2) NAZWA getpeername - pobiera nazwe drugiej strony polaczonego gniazda BIBLIOTEKA Standardowa biblioteka C (libc, -lc) SKLADNIA #include int getpeername(int sockfd, struct sockaddr *restrict addr, socklen_t *restrict addrlen); OPIS getpeername() zwraca adres drugiej strony rownorzednego polaczenia odbywajacego sie poprzez gniazdo sockfd, w buforze na ktory wskazuje addr. Argument addrlen powinien byc zainicjalizowany tak, aby podawac rozmiar obszaru wskazywanego przez addr. Po zakonczeniu, bedzie on zawierac rzeczywisty rozmiar zwroconej nazwy (w bajtach). Nazwa jest obcinana, jesli zadany bufor jest zbyt maly. Zwracany adres jest przycinany, jesli udostepniony bufor jest zbyt maly; w tym przypadku addrlen zwroci wartosc wieksza niz byla podana w wywolaniu. WARTOSC ZWRACANA Po pomyslnym zakonczeniu zwracane jest zero. Po bledzie zwracane jest -1 i ustawiane jest errno wskazujac blad. BLEDY EBADF Argument sockfd nie jest prawidlowym deskryptorem. EFAULT Parametr addr wskazuje poza dostepna przestrzen adresowa procesu. EINVAL addrlen jest nieprawidlowe (np. jest ujemne). ENOBUFS Dostepna ilosc zasobow systemowych jest niewystarczajaca dla wykonania operacji. ENOTCONN Gniazdo nie jest podlaczone. ENOTSOCK Deskryptor pliku sockfd nie odnosi sie do gniazda. STANDARDY POSIX.1-2008. HISTORIA POSIX.1-2001, SVr4, 4.4BSD (pojawilo sie pierwotnie w 4.2BSD). UWAGI W przypadku gniazd strumieniowych, po przeprowadzeniu connect(2), kazde z gniazd moze wywolac getpeername(), aby pozyskac adres drugiego gniazda. Z drugiej strony, gniazda datagramowe sa bezpolaczeniowe. Wywolanie connect(2) na gniezdzie datagramowym jedynie ustawia adres drugiej strony w celu wysylania datagramow za pomoca write(2) lub recv(2). Odbiorca connect(2) moze uzyc getpeername() do pozyskania adresu drugiego gniazda, ktore ustawilo wczesniej dla gniazda. Jednakze drugie gniazdo nie ma tej wiedzy, zatem wywolanie getpeername() na drugim gniezdzie nie zwroci zadnej przydatnej informacji (chyba, ze wywolanie connect(2) wykonano rowniez na drugim gniezdzie). Prosze zauwazyc, ze odbiorca datagramu moze pozyskac adres wysylajacego za pomoca recvfrom(2). ZOBACZ TAKZE accept(2), bind(2), getsockname(2), ip(7), socket(7), unix(7) TLUMACZENIE Autorami polskiego tlumaczenia niniejszej strony podrecznika sa: Przemek Borys , Andrzej Krzysztofowicz i Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.06 31 pazdziernika 2023 r. getpeername(2)