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