CONNECT(2)         Manuel du programmeur Linux         CONNECT(2)


NOM
       connect - Débuter une connexion sur une socket.

SYNOPSIS
       #include <sys/types.h>
       #include <sys/socket.h>

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

DESCRIPTION
       Le paramètre sockfd est une socket.

       Cette fonction est principalement utilisée pour  les  pro­
       cessus clients orientés-connexion.

       Si  la  socket  est  du  type  SOCK_DGRAM,  cette fonction
       indique le correspondant avec lequel la socket doit commu­
       niquer,  c'est l'adresse à laquelle les datagrammes seront
       envoyés, et la seule adresse  depuis  laquelle  les  data­
       grammes seront reçus.

       Si la socket est du type SOCK_STREAM, cette fonction tente
       de se connecter à une autre socket. L'adresse  de  l'autre
       socket  est  indiquée par serv_addr, qui doit être dans le
       même domaine que la socket initiale.

       Chaque domaine de communication  interprète  le  paramètre
       serv_addr, à sa manière. En général, les sockets stream ne
       réussissent un appel  connect  qu'une  seule  fois,  alors
       qu'une   même   socket  datagramme  peut  appeler  connect
       plusieurs fois pour changer son  affectation.  Une  socket
       datagramme  peut interrompre son affectation en se connec­
       tant sur adresse invalide (par exemple nulle).

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 sock­
       ets, il peut en exister d'autres  spécifiques  au  domaine
       employé.

       EBADF  Mauvais descripteur.

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

       ENOTSOCK
              Le descripteur ne correspond pas à une socket.

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



Linux                      18 Mai 1999                          1





CONNECT(2)         Manuel du programmeur Linux         CONNECT(2)


       ECONNREFUSED
              La connexion est refusée par le serveur.

       ETIMEDOUT
              Dépassement du délai maximum pendant la  connexion.

       ENETUNREACH
              Le réseau est inaccessible.

       EHOSTUNREACH
              Le correspondant ne peut pas être joint.

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

       EINPROGRESS
              La  socket  est  non-bloquante,  et la connexion ne
              peut pas être établie immédiatement. Il  est  alors
              possible  d'utiliser select(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.   Cette  option  indiquera si connect a
              réussi (SO_ERROR valant  zéro)  ou  si  une  erreur
              s'est  produite  (SO_ERROR correspondant à l'un des
              codes d'erreurs décrits ci-dessus).

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


CONFORMITÉ
       SVr4, 4.4BSD (La fonction connect est apparue  en  premier
       dans  BSD  4.2).   SVr4  décrit des erreurs EADDRNOTAVAIL,
       EINVAL,  EAFNOSUPPORT,  EALREADY,  EINTR,  EPROTOTYPE,  et
       ENOSR   supplémentaires.  Il  décrit  également  plusieurs
       causes d'erreurs non présentées ici.

NOTE
       Le troisième argument de connect est en fait  un  int  (et
       c'est  ce qu'utilisent BSD 4.*, libc4 et libc5).  Une cer­
       taine confusion POSIX résulte du "socklen_t"  actuel.  Les
       propositions  de  standard  n'ont pas encore été adoptées,
       mais glibc2 les suit déjà et utilise socklen_t. Pour  plus
       de détails voir accept(2).

VOIR AUSSI
       accept(2), bind(2), listen(2), socket(2), getsockname(2)


TRADUCTION
       Christophe Blaess, 1997.




Linux                      18 Mai 1999                          2