Provided by: manpages-fr-dev_3.65d1p1-1_all bug

NOM

       connect - Débuter une connexion sur une socket

SYNOPSIS

       #include <sys/types.h>          /* Consultez NOTES */
       #include <sys/socket.h>

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

DESCRIPTION

       L'appel  système  connect() connecte la socket associée 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 de la socket sockfd ; consultez socket(2) pour
       plus de détails.

       Si la socket sockfd est du type SOCK_DGRAM, alors serv_addr est l'adresse à  laquelle  les
       datagrammes  seront  envoyés  par  défaut,  et la seule adresse depuis laquelle ils seront
       reçus. Si la socket est du type SOCK_STREAM ou SOCK_SEQPACKET, cette fonction tente de  se
       connecter  à une autre socket. L'adresse de l'autre socket est indiquée par serv_addr, qui
       doit être une adresse (de longueur addrlen) dans le même domaine  que  la  socket.  Chaque
       domaine de communication interprète le paramètre addr à sa manière.

       En  général,  les  sockets  des  protocoles  orientés  connexion  ne  réussissent un appel
       connect() qu'une seule fois, alors  qu'une  socket  d'un  protocole  sans  connexion  peut
       appeler  connect()  plusieurs fois pour changer son affectation. Une socket sans connexion
       peut interrompre son affectation en se connectant sur une adresse avec le membre sa_family
       de la structure sockaddr à la valeur AF_UNSPEC (géré par Linux depuis le noyau 2.2).

VALEUR RENVOYÉE

       connect()  renvoie  0  s'il  réussit, ou -1 s'il échoue, auquel cas errno contient le code
       d'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ées 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.

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

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

       EAGAIN Pas de port local disponible, ou pas assez de place dans  les  tables  de  routage.
              Pour  AF_INET,  consultez  la description de /proc/sys/net/ipv4/ip_local_port_range
              dans ip(7) pour les informations indiquant comment augmenter  le  nombre  de  ports
              locaux.

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

       EBADF  Mauvais descripteur.

       ECONNREFUSED
              La connexion est refusée par le serveur.

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

       EINPROGRESS
              La  socket  est  non  bloquante,  et  la  connexion  ne  peut  pas   être   établie
              immédiatement.  Il est alors possible d'utiliser select(2) ou poll(2) pour attendre
              que la 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 l'arrivée d'un signal avant  qu'une  connexion
              valide ne survienne ; consultez signal(7).

       EISCONN
              La socket est déjà connectée.

       ENETUNREACH
              Le réseau est inaccessible.

       ENOTSOCK
              Le descripteur ne correspond pas à une socket.

       ETIMEDOUT
              Dépassement du délai maximum 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.

CONFORMITÉ

       SVr4, BSD 4.4 (la fonction connect() est apparue dans BSD 4.2), POSIX.1-2001.

NOTES

       POSIX.1-2001  ne  requiert  pas  l'inclusion  de  <sys/types.h>,  et cet en‐tête n'est pas
       nécessaire sous Linux. Cependant, il  doit  être  inclus  sous  certaines  implémentations
       historiques (BSD), et les applications portables devraient probablement l'utiliser.

       Le  troisième  argument de connect() est en fait un int (et c'est ce qu'utilisent BSD 4.x,
       libc4 et libc5). Une certaine confusion POSIX a donné le « socklen_t »  actuel,  également
       utilisé par glibc. Pour plus de détails, consultez accept(2).

EXEMPLE

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

VOIR AUSSI

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

COLOPHON

       Cette  page  fait partie de la publication 3.65 du projet man-pages Linux. Une description
       du projet et des  instructions  pour  signaler  des  anomalies  peuvent  être  trouvées  à
       l'adresse http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Depuis    2010,    cette   traduction   est   maintenue   à   l'aide   de   l'outil   po4a
       <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du  projet
       perkamon <http://perkamon.alioth.debian.org/>.

       Christophe    Blaess    <http://www.blaess.fr/christophe/>   (1996-2003),   Alain   Portal
       <http://manpagesfr.free.fr/>  (2003-2006).  Julien  Cristau  et  l'équipe  francophone  de
       traduction de Debian (2006-2009).

       Veuillez     signaler     toute     erreur     de     traduction     en     écrivant     à
       <debian-l10n-french@lists.debian.org>  ou  par  un  rapport  de  bogue   sur   le   paquet
       manpages-fr.

       Vous  pouvez  toujours  avoir  accès  à la version anglaise de ce document en utilisant la
       commande « man -L C <section> <page_de_man> ».