Loading

NOM

       connect - Débuter une connexion sur une socket

SYNOPSIS

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

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

       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 ;  voir  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.     (Voir     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 ; voir 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 voir 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.23  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

       Cette  page  de  manuel  a  été  traduite et mise à jour par Christophe
       Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis  par
       Alain  Portal  <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
       francophone de traduction de Debian.

       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> ».