listen - auf einem Socket auf Verbindungen warten
Standard-C-Bibliothek (
libc,
-lc)
#include <sys/socket.h>
int listen(int sockdd, int Rückstau);
listen() markiert das Socket, das
sockdd angibt, als ein passives
Socket, das wie ein Socket benutzt wird, das eingehende Verbindungsanfragen
unter Benutzung von
accept(2) akzeptiert.
Das Argument
sockdd ist ein Dateideskriptor, der sich auf ein Socket des
Typs
SOCK_STREAM oder
SOCK_SEQPACKET bezieht.
Das Argument
Rückstau spezifiziert die maximale Länge der
Warteschlange für
sockdd, die noch nicht angenommene
Verbindungen aufnimmt. Wenn eine Verbindungsanfrage eintrifft und die
Warteschlange bereits voll ist, dann erhält der Client einen Fehler mit
der Angabe
ECONNREFUSED oder die Anfrage wird ignoriert, wenn das
zugrundeliegende Protokoll »erneutes Übertragen«
unterstützt, damit weitere Verbindungsversuche erfolgreich sind.
Bei Erfolg wird Null zurückgegeben. Bei einem Fehler wird -1
zurückgegeben und
errno gesetzt, um den Fehler anzuzeigen.
- EADDRINUSE
- Ein anderes Socket wartet bereits auf dem gleichen Port auf
Verbindungen.
- EADDRINUSE
- (Internet Domain Sockets) Das durch sockdd
referenzierte Socket war bisher nicht an eine Adresse gebunden und beim
Versuch, es an einen kurzlebigen Port zu binden, wurde festgestellt, dass
alle Portnummern in dem Portbereich für kurzlebige Portnummern
derzeit verwendet werden. Lesen Sie die Erörterung von
/proc/sys/net/ipv4/ip_local_port_range in ip(7).
- EBADF
- Das Argument sockdd ist kein zulässiger
Dateideskriptor.
- ENOTSOCK
- Der Dateideskriptor sockdd zeigt nicht auf ein
Socket.
- EOPNOTSUPP
- Der Typ des Sockets unterstützt die Operation
listen() nicht.
POSIX.1-2001, POSIX.1-2008, 4.4BSD (
listen() erschien erstmals in
4.2BSD.)
Um Verbindungen zu akzeptieren, werden die folgenden Schritte ausgeführt:
- (1)
- Es wird mittels socket(2) ein Socket erstellt.
- (2)
- Das Socket wird mittels bind(2) mit einer lokalen
Adresse verknüpft, so dass andere Sockets mittels connect(2)
damit verbunden werden können.
- (3)
- Mit listen() werden eine Bereitschaft ankommende
Verbindungen anzunehmen und eine Warteschlangenbeschränkung
für eingehende Verbindungen angegeben.
- (4)
- Verbindungen werden mit accept(2) akzeptiert.
Das Verhalten des Arguments
Rückstau auf TCP-Sockets
änderte sich mit Linux 2.2. Nun gibt es die Länge der
Warteschlange für
komplett etablierte Sockets an, die darauf
warten akzeptiert zu werden, anstatt der Anzahl der unvollständigen
Verbindungsanfragen. Die maximale Länge der Warteschlange für
unvollständige Sockets kann in
/proc/sys/net/ipv4/tcp_max_syn_backlog gesetzt werden. Wenn dort
SYN-Cookies eingeschaltet sind, gibt es keine maximale Länge und diese
Einstellung wird ignoriert. Lesen Sie
tcp(7), um weitere Informationen
zu erhalten.
Falls das Argument
Rückstau größer als der Wert in
/proc/sys/net/core/somaxconn ist, dann wird es stillschweigend auf
diesen Wert nach oben begrenzt. Seit Linux 5.4 ist der Standardwert in dieser
Datei 4096; in älteren Kerneln ist der Wert 128. Vor Linux 2.4.25 war
diese Beschränkung ein hart kodierter Wert
SOMAXCONN von 128.
Siehe
bind(2).
accept(2),
bind(2),
connect(2),
socket(2),
socket(7)
Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Schulze
<
[email protected]> und Chris Leick <
[email protected]> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die
GNU
General Public License Version 3 oder neuer bezüglich der
Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken
Sie bitte eine E-Mail an die
Mailingliste
der Übersetzer