listen(2) | System Calls Manual | listen(2) |
listen - слушать соединения на сокете
Standard C library (libc, -lc)
#include <sys/socket.h>
int listen(int sockfd, int backlog);
Вызов listen() помечает сокет, указанный в sockfd как пассивный, то есть как сокет, который будет использоваться для приёма запросов входящих соединений с помощью accept(2).
Аргумент sockfd является файловым дескриптором, который ссылается на сокет типа SOCK_STREAM или SOCK_SEQPACKET.
Аргумент backlog задает максимальный размер, до которого может расти очередь ожидающих соединений у sockfd. Если приходит запрос на соединение, а очередь полна, то клиент может получить ошибку с указание ECONNREFUSED или, если низлежащий протокол поддерживает повторную передачу, запрос может быть игнорирован, чтобы попытаться соединиться позднее.
On success, zero is returned. On error, -1 is returned, and errno is set to indicate the error.
POSIX.1-2001, POSIX.1-2008, 4.4BSD (вызов listen() впервые появился в 4.2BSD).
Для принятия соединений должны быть выполнены следующие шаги:
Поведение аргумента backlog на TCP-сокетах изменилось в Linux 2.2. Теперь вместо количества неоконченных запросов на соединение он задает размер очереди для полностью (completely) установленных соединений, ожидающих, пока процесс примет их. Максимальный размер очереди для неполных сокетов может быть задан через /proc/sys/net/ipv4/tcp_max_syn_backlog. Когда разрешено использование syncookies, логический максимальный размер отсутствует и эта настройка игнорируется. Подробности см. в tcp(7).
If the backlog argument is greater than the value in /proc/sys/net/core/somaxconn, then it is silently capped to that value. Since Linux 5.4, the default in this file is 4096; in earlier kernels, the default value is 128. Before Linux 2.4.25, this limit was a hard coded value, SOMAXCONN, with the value 128.
См. bind(2).
accept(2), bind(2), connect(2), socket(2), socket(7)
Русский перевод этой страницы руководства был сделан Artyom Kunyov <artkun@guitarplayer.ru>, Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, Katrin Kutepova <blackkatelv@gmail.com>, Konstantin Shvaykovskiy <kot.shv@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>
Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.
Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.
4 декабря 2022 г. | Linux man-pages 6.03 |