Scroll to navigation

LISTEN(2) Linux - příručka programátora LISTEN(2)

JMÉNO

listen - čekej na spojení na soketu

POUŽITÍ

#include <sys/types.h>          /* Viz POZNÁMKY */
#include <sys/socket.h>
int listen(int sockfd, int backlog);

POPIS

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.

NÁVRATOVÉ HODNOTY

Je-li volání úspěšné, vrací se 0, jinak -1 a je nastavena proměnná errno.

CHYBOVÉ STAVY

Jiný soket už naslouchá na daném portu.
(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).
Argument sockfd není platným deskriptorem.
The file descriptor sockfd does not refer to a socket.
Typ soketu není podporován voláním listen.

SPLŇUJE STANDARDY

POSIX.1-2001, POSIX.1-2008, 4.4BSD. listen() se poprvé objevilo v 4.2BSD.

POZNÁMKY

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).

POSIX.1 nevyžaduje vložení <sys/types.h> a proto není tento hlavičkový soubor v Linuxu vyžadován. Nicméně některé starší (BSD) implementace jej vyžadují a v přenositelných aplikacích by také bylo tento hlavičkový soubor zachovat.

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 truncated to that value. Since Linux 5.4, the default in this file is 4096; in earlier kernels, the default value is 128. In kernels before 2.4.25, this limit was a hard coded value, SOMAXCONN, with the value 128.

PŘÍKLADY

Viz bind(2).

DALŠÍ INFORMACE

accept(2), bind(2), connect(2), socket(2), socket(7)

TIRÁŽ

Tato stránka je součástí projektu Linux man-pages v5.10. Popis projektu a informace o hlášení chyb najdete na https://www.kernel.org/doc/man-pages/.

PŘEKLAD

Překlad této příručky do španělštiny vytvořili Pavel Heimlich <tropikhajma@gmail.com>

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 translation-team-cs@lists.sourceforge.net.

9. června 2020 Linux