| getpeername(2) | System Calls Manual | getpeername(2) |
getpeername - получает имя подключившегося сокета
Стандартная библиотека языка C (libc, -lc)
#include <sys/socket.h>
int getpeername(int sockfd, struct sockaddr *restrict addr,
socklen_t *restrict addrlen);
getpeername() возвращает адрес машины, подключившейся к сокету sockfd, в буфер, указанный addr. В параметре addrlen должно быть указано, сколько места выделено, на которое указывает addr. По возвращении он содержит реальный размер памяти, занимаемый возвращаемым именем (в байтах). Имя обрезается, если буфер окажется слишком мал.
Возвращаемый адрес урежется, если предоставленный буфер окажется слишком маленьким; в этом случае в addrlen будет возвращено значение большее чем было в вызове.
При успешном выполнении возвращается 0. При ошибке возвращается -1, а в errno содержится код ошибки.
POSIX.1-2008.
POSIX.1-2001, SVr4, 4.4BSD (впервые появилось в 4.2BSD).
Для потоковых сокетов после выполнения connect(2) любой сокет может вызвать getpeername() для получения адреса соседа (peer). С другой стороны, дейтаграмные сокеты не устанавливают соединения. Вызов connect(2) для дейтаграмного сокета просто задаст адрес соседа в исходящих дейтаграммах, посылаемых с помощью write(2) или recv(2). Вызывающий connect(2) может использовать getpeername() для получения адреса соседа., который был установлен у сокета ранее. Однако, сокет соседа не знает про это и вызов getpeername() для сокета соседа не вернёт полезной информации (если сосед также не вызвал connect(2)). Заметим, что получатель дейтаграммы может получить адрес отправителя, если использует recvfrom(2).
accept(2), bind(2), getsockname(2), ip(7), socket(7), unix(7)
Русский перевод этой страницы руководства разработал(и) Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, Vladislav <ivladislavefimov@gmail.com>, Yuri Kozlov <yuray@komyakino.ru>, Иван Павлов <pavia00@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>
Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.
Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков.
| 2 мая 2024 г. | Справочные страницы Linux 6.9.1 |