Provided by: manpages-fr-dev_4.27.0-1_all bug

NOM

       connect - Débuter une connexion sur un socket

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <sys/socket.h>

       int connect(int sockfd, const struct sockaddr *addr,
                   socklen_t addrlen);

DESCRIPTION

       L'appel  système  connect()  connecte  le  socket  associé  au  descripteur de fichier sockfd à l'adresse
       indiquée par addr. L'argument addrlen indique la  taille  de  addr.  Le  format  de  l'adresse  addr  est
       déterminé par la famille du socket sockfd ; consultez socket(2) pour plus de détails.

       Si  le  socket  sockfd est du type SOCK_DGRAM, alors addr est l'adresse à laquelle les datagrammes seront
       envoyés par défaut, et la seule adresse depuis laquelle ils seront  reçus.  Si  le  socket  est  du  type
       SOCK_STREAM  ou  SOCK_SEQPACKET,  cette  fonction  tente  de se connecter à un autre socket. L'adresse de
       l'autre socket est indiquée par addr.

       Certains sockets de protocole (comme les sockets de flux de domaine UNIX) peuvent connect()  avec  succès
       une seule fois.

       Certains  sockets  de  protocole  (comme  les  sockets  datagramme des domaines UNIX et Internet) peuvent
       utiliser connect() plusieurs fois pour modifier leur association.

       Certains sockets (comme les sockets TCP ainsi que les sockets datagramme des domaines UNIX  et  Internet)
       peuvent  rompre  l'association  en  se  connectant  à  une  adresse  avec le membre sa_family de sockaddr
       positionné sur AF_UNSPEC;, le socket peut par la suite se connecter à une autre  adresse  (AF_UNSPEC  est
       pris en charge sur Linux depuis Linux 2.2).

VALEUR RENVOYÉE

       connect()  renvoie  0  s'il  réussit,  ou  -1  s'il échoue, auquel cas errno est positionné pour indiquer
       l'erreur.

ERREURS

       Voici une liste d'erreurs générales concernant les sockets. Il peut en exister  d'autres  spécifiques  au
       domaine employé.

       EACCES Pour  les  sockets  de  domaine  UNIX  qui  sont spécifiés par un nom de chemin : la permission en
              écriture est refusée sur le fichier socket, ou la permission de parcours est refusée pour l'un des
              répertoires composant le chemin. (Consultez aussi path_resolution(7).)

       EACCES
       EPERM  L'utilisateur a tenté de se connecter  à  une  adresse  broadcast  sans  avoir  activé  l'attribut
              broadcast, ou la demande de connexion a échoué à cause des règles d'un pare-feu local.

       EACCES Ces  codes d'erreur peuvent aussi être renvoyés si une règle SELinux a interdit une connexion (par
              exemple si une règle prévoit qu'un mandataire HTTP ne peut se connecter qu'à des ports associés  à
              des serveurs HTTP et que le mandataire essaie de se connecter à un autre port).

       EADDRINUSE
              L'adresse locale est déjà utilisée.

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

       EAFNOSUPPORT
              L'adresse transmise n'a pas la bonne valeur dans son champ sa_family.

       EAGAIN Pour les sockets de domaine UNIX non bloquants, le socket n'est pas bloquant et  la  connexion  ne
              peut  pas  être  établie  immédiatement.  Pour  les autres familles de sockets, il n'y a pas assez
              d'entrées dans le cache de routage.

       EALREADY
              Le socket est non bloquant et une tentative de connexion précédente ne s'est pas encore terminée.

       EBADF  sockfd n'est pas un descripteur de fichier valable.

       ECONNREFUSED
              La connect() à un socket de flux n'a rien trouvé qui écoutait à l'adresse distante.

       EFAULT La structure d'adresse pointe en dehors de l'espace d'adressage.

       EINPROGRESS
              Le socket est non bloquant et la connexion ne peut pas être établie immédiatement (les sockets  de
              domaines  UNIX  échouaient  plutôt  avec  EAGAIN).  Il  est alors possible d'utiliser select(2) ou
              poll(2) pour attendre que le socket soit disponible en écriture. Une fois que  select(2)  confirme
              la  possibilité  d'écrire, utilisez getsockopt(2) pour lire l'option SO_ERROR du niveau SOL_SOCKET
              et déterminer si connect() s'est terminé avec succès (SO_ERROR vaut zéro) ou  en  échec  (SO_ERROR
              contient l'un des codes d'erreurs listés ici, indiquant le problème).

       EINTR  L'appel système a été interrompu par la réception d'un signal ; consultez signal(7).

       EISCONN
              Le socket est déjà connecté.

       ENETUNREACH
              Le réseau est inaccessible.

       ENOTSOCK
              Le descripteur de fichier sockfd ne fait pas référence à un socket.

       EPROTOTYPE
              Le  protocole  de communication demandé n'est pas accepté par le type de socket. Cette erreur peut
              se produire, par exemple, lors d'une tentative de connexion d'un socket de datagramme UNIX avec un
              socket de flux.

       ETIMEDOUT
              Dépassement du délai maximal pendant la connexion. Le serveur peut être trop chargé pour  accepter
              une  nouvelle  connexion.  Remarquez  que pour les sockets IP, le délai peut être très long si les
              syncookies sont activés sur le serveur.

STANDARDS

       POSIX.1-2008.

HISTORIQUE

       POSIX.1-2001, SVr4, 4.4BSD, (connect() est apparu dans 4.2BSD).

NOTES

       Si connect() échoue, considérez que le socket est dans un état non spécifié. Les  applications  portables
       devraient fermer le socket et en créer un nouveau pour se reconnecter.

EXEMPLES

       getaddrinfo(3) contient un exemple d'utilisation de connect().

VOIR AUSSI

       accept(2), bind(2), getsockname(2), listen(2), socket(2), path_resolution(7), selinux(8)

TRADUCTION

       La   traduction   française   de   cette   page   de   manuel   a   été   créée   par  Christophe  Blaess
       <https://www.blaess.fr/christophe/>,   Stéphan   Rafin   <stephan.rafin@laposte.net>,   Thierry   Vignaud
       <tvignaud@mandriva.com>,  François  Micaux,  Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard
       <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-luc.coulon@wanadoo.fr>,   Julien   Cristau
       <jcristau@debian.org>,      Thomas      Huriaux      <thomas.huriaux@gmail.com>,     Nicolas     François
       <nicolas.francois@centraliens.net>,    Florentin    Duneau    <fduneau@gmail.com>,     Simon     Paillard
       <simon.paillard@resel.enst-bretagne.fr>,     Denis    Barbier    <barbier@debian.org>,    David    Prévot
       <david@tilapin.org>,    Cédric    Boutillier     <cedric.boutillier@gmail.com>,     Frédéric     Hantrais
       <fhantrais@gmail.com> et Jean-Philippe MENGUAL <jpmengual@debian.org>

       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  à
       debian-l10n-french@lists.debian.org.

Pages du manuel de Linux 6.9.1                     2 mai 2024                                         connect(2)