jammy (2) connect.2.gz

Provided by: manpages-fr-dev_4.13-4_all bug

NOM

       connect - Débuter une connexion sur un 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  le  socket  associé  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 du socket sockfd ; consultez socket(2) pour plus de détails.

       Si  le  socket  sockfd est du type SOCK_DGRAM, alors addr est l'adresse à laquelle les datagrammes seront
       envoyés par défaut, et la seule adresse depuis laquelle ils seront  reçus.  Si  le  socket  est  du  type
       SOCK_STREAM  ou  SOCK_SEQPACKET,  cette  fonction  tente  de se connecter à un autre socket. L'adresse de
       l'autre socket est indiquée par addr.

       Certains sockets de protocole (comme les sockets de flux de domaine UNIX) peuvent connect()  avec  succès
       une seule fois.

       Certains  sockets  de  protocole  (comme  les  sockets  datagramme des domaines UNIX et Internet) peuvent
       utiliser connect() plusieurs fois pour modifier leur association.

       Certains sockets (comme les sockets TCP ainsi que les sockets datagramme des domaines UNIX  et  Internet)
       peuvent  rompre  l'association  en  se  connectant  à  une  adresse  avec le membre sa_family de sockaddr
       positionné sur AF_UNSPEC;, le socket peut par la suite se connecter à une autre  adresse  (AF_UNSPEC  est
       pris en charge sur 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és 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.

              EACCES  peut aussi être renvoyé si un erègle SELinux a interdit une connexion ('par exemple si une
              règle prévoit qu'un mandataire HTTP ne peut se connecter qu'à des ports associés aux serveurs HTTP
              et que le mandataire essaie de se connecter à un autre port). dd

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

       EADDRNOTAVAIL
              (Sockets  Internet) Le socket indiqué par sockfd n'a pas encore été attaché a une adresse, et lors
              d'une tentative d'attachement à un port éphémère, aucun port n'était disponible dans  l'intervalle
              des  ports éphémères. Consultez les explications concernant /proc/sys/net/ipv4/ip_local_port_range
              dans ip(7).

       EAFNOSUPPORT
              L'adresse transmise n'a pas la bonne valeur dans son champ sa_family.

       EAGAIN Pour les sockets de domaine UNIX non bloquants, le socket n'est pas bloquant et  la  connexion  ne
              peut  pas  être  établie  immédiatement.  Pour  les autres familles de sockets, il n'y a pas assez
              d'entrées dans le cache de routage.

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

       EBADF  sockfd n'est pas un descripteur de fichier valable.

       ECONNREFUSED
              La connect() à un socket de flux n'a rien trouvé qui écoutait à l'adresse distante.

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

       EINPROGRESS
              Le socket est non bloquant et la connexion ne peut pas être établie immédiatement (les sockets  de
              domaines  UNIX  échouaient  plutôt  avec  EAGAIN).  Il  est alors possible d'utiliser select(2) ou
              poll(2) pour attendre que le 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 la réception d'un signal ; consultez signal(7).

       EISCONN
              Le socket est déjà connecté.

       ENETUNREACH
              Le réseau est inaccessible.

       ENOTSOCK
              Le descripteur de fichier sockfd ne fait pas référence à un socket.

       EPROTOTYPE
              Le  protocole  de communication demandé n'est pas accepté par le type de socket. Cette erreur peut
              se produire, par exemple, lors d'une tentative de connexion d'un socket de datagramme UNIX avec un
              socket de flux.

       ETIMEDOUT
              Dépassement  du délai maximal 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É

       POSIX.1-2001, POSIX.1-2008, SVr4, 4.4BSD, (connect() est apparu dans BSD 4.2).

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.

       Pour plus de détails sur le type socklen_t, voir accept(2).

       Si  connect()  échoue, considérez que le socket est dans un état non spécifié. Les applications portables
       devraient fermer le socket et en créer un nouveau pour se reconnecter.

EXEMPLES

       getaddrinfo(3) contient un exemple d'utilisation de connect().

VOIR AUSSI

       accept(2), bind(2), getsockname(2), listen(2), socket(2), path_resolution(7), selinux(8)

COLOPHON

       Cette page fait partie de la publication 5.10 du projet man-pages Linux. Une description du projet et des
       instructions  pour  signaler  des  anomalies et la dernière version de cette page peuvent être trouvées à
       l'adresse https://www.kernel.org/doc/man-pages/.

TRADUCTION

       La  traduction  française   de   cette   page   de   manuel   a   été   créée   par   Christophe   Blaess
       <https://www.blaess.fr/christophe/>,   Stéphan   Rafin   <stephan.rafin@laposte.net>,   Thierry   Vignaud
       <tvignaud@mandriva.com>, François Micaux, Alain Portal  <aportal@univ-montp2.fr>,  Jean-Philippe  Guérard
       <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-luc.coulon@wanadoo.fr>,   Julien   Cristau
       <jcristau@debian.org>,     Thomas     Huriaux      <thomas.huriaux@gmail.com>,      Nicolas      François
       <nicolas.francois@centraliens.net>,     Florentin     Duneau    <fduneau@gmail.com>,    Simon    Paillard
       <simon.paillard@resel.enst-bretagne.fr>,    Denis    Barbier    <barbier@debian.org>,    David     Prévot
       <david@tilapin.org>,     Cédric     Boutillier     <cedric.boutillier@gmail.com>,    Frédéric    Hantrais
       <fhantrais@gmail.com> et Jean-Philippe MENGUAL <jpmengual@debian.org>

       Cette traduction est une documentation libre ; veuillez vous reporter à la  GNU  General  Public  License
       version 3   ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   concernant   les  conditions  de  copie  et  de
       distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel,  veuillez  envoyer  un  message  à
       debian-l10n-french@lists.debian.org ⟨⟩.