#include <sys/types.h>
#include <sys/sochet.h>
int accept(int s, struct sockaddr *addr, int *addrlen);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))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.