listen - čekej na spojení na soketu
Standardní knihovna C (
libc,
-lc)
#include <sys/socket.h>
int listen(int sockfd, int backlog);
Funkce
listen() označí soket specifikovaný
parametrem
sockfd jako pasivní, to znamená, že
soket bude použit pro přijetí požadavků
příchozích spojení pomocí funkce
accept(2).
Parametr
sockfd je file deskriptor, který popisuje soket,
který je typu
SOCK_STREAM nebo
SOCK_SEQPACKET.
Parametr
backlog specifikuje maximální délku, do
které fronta čekajících požadavků na
spojení prostřednictvím
sockfd může
dorůst. Je-li fronta zaplněna, obdrží klient
zprávu
ECONNREFUSED nebo pokud to nižší
vrstva podporuje znovuzaslání, požadavek
může být ignorován a pozdější
pokus o spojení uspěje.
On success, zero is returned. On error, -1 is returned, and
errno is set
to indicate the error.
- EADDRINUSE
- Jiný soket už naslouchá na
daném portu.
- EADDRINUSE
- (Internet domain sockets) The socket referred to by
sockfd had not previously been bound to an address and, upon
attempting to bind it to an ephemeral port, it was determined that all
port numbers in the ephemeral port range are currently in use. See the
discussion of /proc/sys/net/ipv4/ip_local_port_range in
ip(7).
- EBADF
- Argument sockfd není platným
deskriptorem.
- ENOTSOCK
- The file descriptor sockfd does not refer to a
socket.
- EOPNOTSUPP
- Typ soketu není podporován
voláním listen.
POSIX.1-2001, POSIX.1-2008, 4.4BSD.
listen() se poprvé objevilo v
4.2BSD.
K přijetí spojení jsou provedeny tyto kroky:
- (1)
- Je vytvořen soket pomocí
socket(2).
- (2)
- Soket je navázán na lokální
adresu pomocí bind(2), takže další
sokety na něj mohou být napojeny pomocí
connect(2).
- (3)
- Ochota k přijetí
příchozího spojení a limit pro délku
fronty jsou specifikovány pomocí listen().
- (4)
- Spojení je přijato pomocí
accept(2).
The behavior of the
backlog argument on TCP sockets changed with Linux
2.2. Now it specifies the queue length for
completely established
sockets waiting to be accepted, instead of the number of incomplete connection
requests. The maximum length of the queue for incomplete sockets can be set
using
/proc/sys/net/ipv4/tcp_max_syn_backlog. When syncookies are
enabled there is no logical maximum length and this setting is ignored. See
tcp(7) for more information.
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.
Viz
bind(2).
accept(2),
bind(2),
connect(2),
socket(2),
socket(7)
Překlad této příručky do
španělštiny vytvořili Pavel Heimlich
<
[email protected]>
Tento překlad je bezplatná dokumentace;
Přečtěte si
GNU
General Public License Version 3 nebo novější
ohledně podmínek autorských práv. Neexistuje
ŽÁDNÁ ODPOVĚDNOST.
Pokud narazíte na nějaké chyby v překladu
této příručky, pošlete e-mail na adresu
[email protected]