sourCEntral - mobile manpages

pdf

getpeername

ИМЯ

getpeername - получает имя подключившегося сокета

LIBRARY

Standard C library (libc, -lc)

СИНТАКСИС

#include <sys/socket.h>

int getpeername(int sockfd, struct sockaddr *restrict addr,
socklen_t *restrict
addrlen);

ОПИСАНИЕ

getpeername() возвращает адрес машины, подключившейся к сокету sockfd, в буфер, указанный addr. В параметре addrlen должно быть указано, сколько места выделено, на которое указывает addr. По возвращении он содержит реальный размер памяти, занимаемый возвращаемым именем (в байтах). Имя обрезается, если буфер окажется слишком мал.

Возвращаемый адрес урежется, если предоставленный буфер окажется слишком маленьким; в этом случае в addrlen будет возвращено значение большее чем было в вызове.

ВОЗВРАЩАЕМОЕЗНАЧЕНИЕ

On success, zero is returned. On error, -1 is returned, and errno is set to indicate the error.

ОШИБКИ

EBADF

Аргумент sockfd не является допустимым файловым дескриптором.

EFAULT

Аргумент addr указывает на память в недопустимой части адресуемого пространства процесса.

EINVAL

Неправильное значение аргумента addrlen (например, отрицательное).

ENOBUFS

Недостаточно ресурсов в системе для выполнения операции.

ENOTCONN

Сокет не подключён.

ENOTSOCK

Файловый дескриптор sockfd указывает не на каталог.

СТАНДАРТЫ

POSIX.1-2001, POSIX.1-2008, SVr4, 4.4BSD, (getpeername() впервые появился в 4.2BSD).

ЗАМЕЧАНИЯ

Описание типа socklen_t смотрите в accept(2).

Для потоковых сокетов после выполнения 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 DOT hackimov AT gmail DOT com>, Dmitry Bolkhovskikh <d20052005 AT yandex DOT ru>, Vladislav <ivladislavefimov AT gmail DOT com>, Yuri Kozlov <yuray AT komyakino DOT ru> и Иван Павлов <pavia00 AT gmail DOT com>

Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks.

pdf