Provided by: manpages-fr-dev_3.57d1p1-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.57 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> ».