LISTEN
JMÉNO
listen − čekej na spojení na soketu
SYNTAXE
#include <sys/types.h> /*viz POZNÁMKY*/ #include <sys/socket.h>
int listen(int sockfd, int backlog);
POPIS
UPOZORNĚNÍ: Projekt českých manuálových stránek není nadále udržován. Tato manuálová stránka je zastaralá a informace zde uvedené mohou být neaktuální. Aktuální informace naleznete v nápovědě příkazu nebo anglické verzi manuálových stránek.
Funkce listen(2) 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 ECONNREFUSEDnebopokudtonižšívrstvapodporujeznovuzaslání, požadavek může být ignorován a pozdější pokus o spojení uspěje.
NÁVRATOVÁ HODNOTA
V případě úspěchu je vrácena nula, jinak -1 a je příslušně nastavena proměnná errno
CHYBY
EADDRINUSE
Jiný soket už naslouchá na daném portu. EBADF Argument sockfd není platným deskriptorem.
ENOTSOCK
Argument ssockfd není deskriptorem soketu.
EOPNOTSUPP
Typ soketu není podporován voláním listen.
SPLŇUJE STANDARDY
4.4BSD, POSIX.1-2001. Volání 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-2001 nevyžaduje vložení <sys/types.h> a tento hlavičkový soubor není vyžadován ani v Linuxu. Nicméně některé starší (BSD) implementace vyžadují tento soubor a proto by měl být vložen do přenositelných aplikací.
Chování argumentu backlog na TCP soketech se změnilo v Linuxu 2.2. Nyní specifikuje délku fronty pro kompletně zařízený soket čekající na přijetí, místo počtu nekompletních požadavků na spojení. Maximální délka fronty nekompletního soketu může být nastavena pomocí tcp_max_syn_backlog sysctl. Pokud jsou syncookies povoleny není logicky žádná maximální délka a toto sysctl nastavení je ignorováno. Viz tcp(7) pro více informací.
Pokud je backlog argument větší než hodnota v /proc/sys/ net/core/somaxconn, pak je tiše oříznuta na tuto hodnotu. implicitní hodnota je 128. V jádrech starších než 2.4.25 bylo tato hodnota pevně stanovena na 128.
PŘÍKLAD
Viz bind(2).
DALŠÍ INFORMACE
accept(2), bind"(2), connect (2), socket (2)
TIRÁŽ
Tato stránka je součástí projektu Linux man−pages. Popis projektu a informace o hlášení chyb najdete na http://www.kernel.org/doc/man−pages/.