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

Linux                                            3 décembre 2008                                      CONNECT(2)