ACCEPT |
Acceptation |
GNU C |
sys/types.h sys/socket.h |
Syntaxe
int accept(int socket, struct sockaddr *addr, socklen_t *length_ptr);
|
Paramètres
Nom |
Description |
socket |
Ce paramètre permet d'indiquer le numéro du socket. |
addr |
Ce paramètre permet de retourner un pointeur sur les informations sur le nom du socket client ayant initialisé la connexion. |
length_ptr |
Ce paramètre permet de retourner la longueur des informations sur le nom du socket client ayant initialisé la connexion. |
Description
Cette fonction permet d'accepter une nouvelle connexion sur un socket.
La fonction accept attend si aucune connexion n'est en attente, à moins que le mode non bloquant du socket ne soit défini.
Vous pouvez utiliser select pour attendre une connexion en attente, avec un socket non bloquante.
Remarques
- Accepter une connexion ne fait pas partie de la prise de connexion. Au lieu de cela, il crée un nouveau socket devenant connecté. La valeur de retour normale de la fonction accept
est le descripteur de fichier du nouveau socket. Après acceptation, le socket d'origine reste ouvert et non connecté, et continue à écouter jusqu'à ce que vous le fermiez. Vous pouvez
accepter d'autres connexions avec socket en appelant accepter à nouveau.
- Si une erreur survient, la fonction accept renvoie -1 et la variable errno retourne le code d'erreur suivantes :
Constante |
Description |
EBADF |
Cette constante permet que le paramètre socket n'est pas un descripteur de fichier valide. |
ENOTSOCK |
Cette constante permet d'indiquer que le paramètre socket du descripteur n'est pas un socket. |
EOPNOTSUPP |
Cette constante permet d'indiquer que le socket de descripteur ne supporte pas cette opération. |
EWOULDBLOCK |
Cette constante permet d'indiquer que le mode non bloquant est défini sur le socket et aucune connexion en attente n'est immédiatement disponible. |
- La fonction accept est défini comme un point d'annulation dans les programmes à multi-processus léger, il faut donc s'y préparer et s'assurer que les ressources allouées
(telles que la mémoire, les descripteurs de fichier, les sémaphores ou autres) sont libérées même si le processus léger est annulé.
- La fonction accept n'est pas autorisée pour les sockets utilisant des styles de communication sans connexion.
Dernière mise à jour : Lundi, le 29 avril 2019