accept
#include <sys/types.h>
#include <sys/sochet.h>
int accept(int s, struct sockaddr *addr, int *addrlen);
Après un listen, un serveur connection-oriented peut attendre une
demande de connexion d'un client par accept.
accept extrait la première demande de connexion en attente et crée
un nouveau socket ayant les mêmes propriétés que s. S'il n'y a pas de
demande en attente, accept bloque le processus appelant jusqu'à
l'arrivée d'une demande.
peer_addr est un argument résultat qui retourne l'adresse (socket)
du client connecté.
addrlen est un argument valeur-résultat : avant l'appel, il pointe
vers la taille effective de la structure retournée.
Le socket s passé à accept n'a que 3 éléments de son
association définis : le protocole, l'adresse locale et le port local. Le
nouveau socket retourné par accept a son association complètement
définie. Le socket s par contre reste dans le même état. Ceci permet au
processus d'accepter d'autres connexions sur le même socket (serveur
concurrent).
accept retourne -1 en cas d'erreur sinon le descripteur du socket.
Exemple: fromlen = sizeof(struct sockaddr_in);
s1 = accept(s,(struct sockaddr *)peer_addr,&fromlen))
retourne dans s1 , un nouveau descripteur de socket possédant
les mêmes propriétés que s et dans peer_addr , les
informations à propos du client qui vient d'établir la connexion.
fromlen est initialisé après l'appel système à la taille effective
de peer_addr .
|