listen - Attendre des connexions sur un socket
Bibliothèque C standard (
libc,
-lc)
#include <sys/socket.h>
int listen(int sockfd, int backlog);
listen() marque le socket référencé par
sockfd comme un socket passif, c'est-à-dire comme un socket qui
sera utilisé pour accepter les demandes de connexions entrantes en
utilisant
accept(2).
Le paramètre
sockfd est un descripteur de fichier qui fait
référence à un socket de type
SOCK_STREAM ou
SOCK_SEQPACKET.
Le paramètre
backlog définit une longueur maximale pour la
file des connexions en attente pour
sockfd. Si une nouvelle connexion
arrive alors que la file est pleine, le client reçoit une erreur
indiquant
ECONNREFUSED, ou, si le protocole sous‐jacent supporte
les retransmissions, la requête peut être ignorée afin
qu'un nouvel essai réussisse.
En cas de succès, zéro est renvoyé. En cas d'erreur,
-1 est renvoyé et
errno est définie pour
préciser l'erreur.
- EADDRINUSE
- Un autre socket est déjà à
l'écoute sur le même port.
- EADDRINUSE
- (Sockets Internet) Le socket indiqué par
sockfd n'a pas encore été attaché a une
adresse, et lors d'une tentative d'attachement à un port
éphémère, aucun port n'était disponible dans
l'intervalle des ports éphémères. Consultez les
explications concernant /proc/sys/net/ipv4/ip_local_port_range dans
ip(7).
- EBADF
-
sockfd n'est pas un descripteur de fichier
valable.
- ENOTSOCK
- Le descripteur de fichier sockfd ne fait pas
référence à un socket.
- EOPNOTSUPP
- Le type de socket ne supporte pas l'appel système
listen().
POSIX.1-2001, POSIX.1-2008, 4.4BSD (
listen() est apparu dans 4.2BSD).
Pour accepter des connexions, les étapes suivantes sont
effectuées :
- (1)
- Un socket est créé avec
socket(2).
- (2)
- Le socket est limité à une adresse locale
avec bind(2), ainsi d'autres sockets peuvent y être
connect(2)és.
- (3)
- La volonté d'accepter des connexions entrantes et
une limite de file pour les connexions entrantes sont
spécifiées avec listen().
- (4)
- Les connexions sont acceptées avec
accept(2).
Le comportement de
backlog a été modifié sur les
sockets TCP dans Linux 2.2. Il s'agit à présent de la longueur
de la file d'attente pour les sockets
totalement établis en
attente d'acceptation, plutôt que les requêtes de connexion
incomplètes. La longueur maximale de la file d'attente des connexions
incomplètes peut être configurée avec
/proc/sys/net/ipv4/tcp_max_syn_backlog. Lorsque les syncookies sont
activés, il n'y a pas de longueur maximale et la configuration est
ignorée. Consultez
tcp(7) pour plus de détails.
Si l'argument
backlog est plus grand que la valeur indiquée dans
le fichier
/proc/sys/net/core/somaxconn, il est bloqué
silencieusement à cette valeur. Depuis Linux 5.4, la valeur par
défaut dans ce fichier est 4096 ; dans les noyaux plus anciens,
elle était de 128. Avant linux 2.4.25, cette limite était
une valeur fixe,
SOMAXCONN, qui valait également 128.
Consultez
bind(2).
accept(2),
bind(2),
connect(2),
socket(2),
socket(7)
La traduction française de cette page de manuel a été
créée par Christophe Blaess
<
https://www.blaess.fr/christophe/>, Stéphan Rafin
<
[email protected]>, Thierry Vignaud
<
[email protected]>, François Micaux, Alain Portal
<
[email protected]>, Jean-Philippe Guérard
<
[email protected]>, Jean-Luc Coulon (f5ibh)
<
[email protected]>, Julien Cristau
<
[email protected]>, Thomas Huriaux <
[email protected]>,
Nicolas François <
[email protected]>, Florentin
Duneau <
[email protected]>, Simon Paillard
<
[email protected]>, Denis Barbier
<
[email protected]>, David Prévot <
[email protected]>,
Cédric Boutillier <
[email protected]>,
Frédéric Hantrais <
[email protected]> et Jean-Philippe
MENGUAL <
[email protected]>
Cette traduction est une documentation libre ; veuillez vous reporter
à la
GNU
General Public License version 3 concernant les conditions de copie
et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message à
[email protected]