oracular (2) connect.2.gz

Provided by: manpages-fr-dev_4.23.1-1_all bug

NOM

       connect - Débuter une connexion sur un socket

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #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 Linux 2.2).

VALEUR RENVOYÉE

       connect()  renvoie  0  s'il  réussit,  ou  -1  s'il échoue, auquel cas errno est positionné pour indiquer
       l'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 Ces codes d'erreur peuvent aussi être renvoyés si une rè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 à
              des serveurs HTTP et que le mandataire essaie de se connecter à un autre port).

       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.

STANDARDS

       POSIX.1-2008.

HISTORIQUE

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

NOTES

       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)

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