CONNECT(2)

NOM
connect - Debuter une connexion sur une socket.

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

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

DESCRIPTION
Le parametre sockfd est une socket. Cette fonction est principalement utilisee pour les processus clients orientes-connexion. Si la socket est du type SOCK_DGRAM, cette fonction indique le correspondant avec lequel la socket doit communiquer, c'est l'adresse a laquelle les datagrammes seront envoyes, et la seule adresse depuis laquelle les datagrammes seront recus. Si la socket est du type SOCK_STREAM, cette fonction tente de se connecter a une autre socket. L'adresse de l'autre socket est indiquee par serv_addr, qui doit etre dans le meme domaine que la socket initiale. Chaque domaine de communication interprete le parametre serv_addr, a sa maniere. En general, les sockets stream ne reussissent un appel connect qu'une seule fois, alors qu'une meme socket datagramme peut appeler connect plusieurs fois pour changer son affectation. Une socket datagramme peut interrompre son affectation en se connectant sur adresse invalide (par exemple nulle).

VALEUR RENVOYEE
connect renvoie 0 s'il reussit, ou -1 s'il echoue, auquel cas errno contient le code d'erreur.

ERREURS
Voici une liste d'erreurs generales concernant les sockets, il peut en exister d'autres specifiques au domaine employe.

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 a une socket.

EISCONN
    La socket est deja connectee.

ECONNREFUSED
    La connexion est refusee par le serveur.

ETIMEDOUT
    Depassement du delai maximum pendant la connexion.

ENETUNREACH
    Le reseau est inaccessible.

EHOSTUNREACH
    Le correspondant ne peut pas etre joint.

EADDRINUSE
    L'adresse est deja utilisee.

EINPROGRESS
    La socket est non-bloquante, et la connexion ne peut pas etre etablie immediatement. Il est alors possible d'utiliser select(2) pour attendre que la socket soit disponible en ecriture. Une fois que select confirme la possibilite d'ecrire, utilisez getsockopt(2) pour lire l'option SO_ERROR du niveau SOL_SOCKET. Cette option indiquera si connect a reussi (SO_ERROR valant zero) ou si une erreur s'est produite (SO_ERROR correspondant a l'un des codes d'erreurs decrits ci-dessus).

EALREADY
    La socket est non-bloquante et une tentative de connexion precedente ne s'est pas encore terminee.

CONFORMITE
SVr4, 4.4BSD (La fonction connect est apparue en premier dans BSD 4.2). SVr4 decrit des erreurs EADDRNOTAVAIL, EINVAL, EAFNOSUPPORT, EALREADY, EINTR, EPROTOTYPE, et ENOSR supplementaires. Il decrit egalement plusieurs causes d'erreurs non presentees ici.

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