Peut-être sur le terminal du serveur, le nombre de demandes entrantes actuelles est limitée. Si les appels entrants du client arrivent plus rapidement, le serveur peut traiter les données, la file d'attente pourrait être surchargée et que les futures demandes entrantes seront refusées par une exception econnrefused. La taille de cette file d'attente est fournie comme un paramètre pour la méthode d'écoute. Cependant, la configuration invoquera sa limitation intégrée à la taille des paquets.
Avec les protocoles de terminaux de paquets (sock_stream, sock_seqpacket), utilisez la méthode accepter (). Il accepte le premier paquet de demande pour le port de réception, SOCKFD, à partir de la file d'attente des demandes entrantes, établit un nouveau port associé et fournit un nouveau fichier particulier pour le connecteur. La connexion fraîchement formée n'est pas configurée pour écouter. Cette fonction n'affecte pas le terminal primaire SOCKFD.
Syntaxe de la fonction accepte la fonction dans le langage C
# int accepte (int sockfd, struct sockaddr * addr, socklen_t * addrlen)
La fonction Accept () contient différents paramètres, qui comprend SOCKFD, * addr et * addrlen. Voici les détails de ces arguments:
Le paramètre «sockfd» est un port qui a été développé en utilisant une prise, connectée à une adresse physique en liant. Mais il attend aussi les entrées après une écoute.
Le paramètre «addr» est un pointeur de configuration «sockaddr». L'emplacement du port homologue est déterminé par le niveau de mise en réseau et est donné dans cet élément. La classe IP de la prise indique la syntaxe optimale de l'IP fournie par le «Addr». Rien ne serait chargé lorsque le paramètre «addr» deviendra nul; «Addrlen» n'a jamais été utilisé dans cette situation et il devra être nul, aussi.
Le paramètre «addrlen» est un paramètre d'évaluation: le récepteur peut le configurer avec la dimension de la structure mentionnée par le paramètre «addr», et il fournirait la taille d'origine du port de référence. Si le cache spécifié est trop limité, la valeur récupérée sera coupée. Dans cette situation, le paramètre «addrlen» produira une sortie considérablement supérieure à la valeur fournie à la fonction.
La fonction Accept () contient le client à moins qu'une connexion ne soit trouvée lorsqu'il n'y a pas de demandes existantes sur la file d'attente et que le port ne peut pas être défini comme non bloquant. La fonction Accept () apparaît avec l'exception Eagain ou EwouldBlock lorsque la configuration est configurée non bloquant et qu'il n'y a pas de demandes d'attente dans la file d'attente.
Exemple de la fonction accepte () en sock.04
Nous allons écrire le programme qui démontre que la fonction accept () retarde l'appel.
Tout d'abord, nous importons certains fichiers d'en-tête requis. La bibliothèque comprend l'utilisation de méthodologies d'entrée et de sortie standard. Indique différentes catégories de symboles et de cadres, traite des fonctionnalités de la prise. Ensuite, spécifiez la variable symbolisée qui sera appliquée comme nœud de destination dans les frameworks donnés à la fonction, et traite des différentes fonctionnalités de la chaîne. Ensuite, nous définissons Backlog 3. Il contient tous les facteurs vitaux nécessaires pour produire la conception intégrée.
Ici, nous appelons la fonction principale (). Dans le corps de la fonction principale (), nous initialisons certaines variables qui sont utilisées dans ce programme. Nous déclarons le pointeur structurel de la variable «sockaddr_in my_addr». Pour créer une prise, nous utiliserons la méthode Socket (). De plus, nous nous sommes liés à l'aide de la fonction bind (). Et attribuer la valeur de la fonction bind () à la variable "b". La méthode bind () contient différents arguments. Nous avons utilisé une condition IF-Else imbriquée dans ce cas. Tout d'abord, nous définissons l'état de l'énoncé «IF». Si la valeur de la variable «B» est supérieure à 0, la fonction printf () imprime le texte «Binding avec succès».
Sinon, la fonction printf () arrête l'exécution du programme en affichant le message «Erreur de liaison». À des fins d'écoute, la fonction écoute () est appelée. Nous initialiserons une variable «l» pour stocker la valeur de la fonction écoute (). La fonction écoute () contient deux paramètres. Maintenant, nous appliquons la condition sur la valeur de l'écoute si la valeur de «L» est supérieure à 0, la méthode printf () est appelée pour afficher le message «écoute». La fonction printf () montre «ne pas écouter» si la condition particulière n'est pas remplie.
De même, pour accepter les demandes système, nous avons utilisé la fonction accept (). Encore une fois pour cette fonction, nous utiliserons la condition IF-Else. La valeur de la fonction accept () est stockée dans la variable «ACC». Si la valeur de la variable «ACC» sera supérieure à 0, nous appelons la méthode printf () pour imprimer la ligne «acceptée». Sinon, nous appelons la déclaration printf () pour imprimer «non accepté». Donc, de cette façon, nous terminerons le code.
Nous recevons ce type de sortie après avoir exécuté le code précédent.
Conclusion
Nous avons joint la fonction de socket accepter 2 C en détail dans cet article. La fonction accept () est appelée pour accepter les demandes du système. Nous devons importer différentes bibliothèques avant d'utiliser la fonction accept (). Cette fonction contient des paramètres responsables de diverses fonctionnalités. Les appels système fournissent un identifiant de fichier particulier pour le port reçu s'ils sont exécutés avec succès. Mais, en cas d'erreur, le code montre l'exception en imprimant -1. Lorsqu'une connexion réseau est demandée, un signal accessible est envoyé et les utilisateurs utiliseront alors accepter () pour recevoir un port pour ce type de connexion.