Provided by: manpages-fr-dev_4.23.1-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  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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⟩.