Provided by: manpages-fr-dev_2.45.1-1_all bug
 

NOM

        connect - Débuter une connexion sur une socket
 

SYNOPSIS

        #include <sys/types.h>
        #include <sys/socket.h>
 
        int connect(int sockfd, const struct sockaddr *serv_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 serv_addr.  L’argument  addrlen
        indique  la  taille  de serv_addr. Le format de l’adresse serv_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  con‐
        necter à 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 serv_addr à sa manière.
 
        En général, les sockets des protocoles orientés connexion  ne  réussis‐
        sent  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.
        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_resolu     
               tion(2).)
 
        EACCES, EPERM
               L’utilisateur  a  tenté  de se connecter à une adresse broadcast
               sans avoir activé l’attribut broadcast, ou la demande de connex‐
               ion 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   PF_INET   voir   l’appel  sysctl
               net.ipv4.ip_local_port_range  dans  ip(7)  pour  savoir  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()  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.
 
        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

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

BOGUES

        La déconnexion d’une socket en appelant connect() avec une  adresse  de
        type AF_UNSPEC n’est pas encore implémentée.
        accept(2),   bind(2),  getsockname(2),  listen(2),  path_resolution(2),
        socket(2)
 

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