connect


#include <sys/types.h>
#include <sys/sochet.h>

int connect(int s, struct sockaddr *name, int namelen);
connect est utilisé par un serveur pour établir une connexion avec un serveur.
name pointe vers l'adresse du socket avec lequel la connexion doit être établie.

Le client n'a pas besoin de faire un bind avant connect : l'établissement de la connexion définit les 4 éléments : adresse locale, port local, adresse distante, port distant. Une adresse locale libre est assignée par connect.

Dans un protocol connection-oriented, connect ne rend la main que quand la connexion est établie ou qu'une erreur se produit.

Un client connectionless peut aussi utiliser connect. Il n'y a, cependant, pas établissement de connexion. Simplement, l'adresse du socket du serveur est stockée et n'a pas besoin d'être spécifiée lors de chaque envoie.

connect retourne 0 si tous s'est bien déroulé sinon -1.

Par exemple,

char *htoname = "mon_serveur";
struct sockaddr_in to;
struct hostent *toinfo;

toinfo = gethostbyname(htoname);

to->sin_family = AF_INET;
to->sin_addr.s_addr = *(u_long *)toinfo->h_addr[0];
to->sin_port = htonl(portnum);

connect(s,(struct sockaddr *)&to,sizeof(struct sockaddr_in));
connecte le socket ``s'' du processus client sur le port ``portnum'' de l'hôte (serveur) portant le nom ``htoname''.