SetSockopt Fonction en C

SetSockopt Fonction en C
«Une fonction setsockopt () est un concept très important lié au réseautage dans la langue C. C'est une fonction très utile liée à la prise. Pour connaître cette fonction, nous devons d'abord connaître le concept d'une prise.

Une prise est un logiciel intégré qui contrôle le réseau total et est traité comme un point de terminaison pour envoyer et recevoir des paquets (données) partout dans le réseau. Il se comporte comme un communicateur entre deux nœuds sur les mêmes réseaux ou différents.

SetSockOpt () est une fonction de la programmation de socket (programme d'application) pour contrôler cette communication et allouer un espace tampon, un contrôle du temps et dans le domaine de la diffusion."

Caractéristiques de la fonction setsockopt ()

1. Fichier d'en-tête: SetSockOPT () La fonction est une fonction prédéfinie quelle définition est écrite dans un fichier d'en-tête dans la bibliothèque C appelée fichier d'en-tête.

2. Syntaxe: int setsockopt (INT Socket, int Level, int option_name, const void * option_value, socketlen_t option_len);

3. Retour: si SetSockOPT () fonctionne correctement, il renvoie zéro. Mais l'exécution infructueuse de la fonction setsockopt () renvoie 0. Pour cela, il renvoie une valeur entière.

Application de la fonction setsockopt ()

La fonction setSockopt () est API. En utilisant cette API, nous pouvons définir notre serveur ou fournir l'option sur notre serveur pour écouter la même pièce.

Exemple 1

Faites-nous savoir la mise en œuvre de la fonction SetSockOpt () dans cet exemple de programmation.

#inclure
#inclure
#inclure
#inclure
#inclure
#inclure
#inclure
#inclure
int main ()

int x1, x2, x3, x4;
if ((x1 = socket (af_inet, sock_stream, 0)) < 0 )

Perror ("Vérification de l'appareil:");
sortie (0);

x4 = sizeof (x2);
if (getockopt (x1, ipproto_tcp, tcp_maxseg, (char *) & x2, & x4) < 0 )

Perror ("L'erreur s'est produite en raison de la défaillance de la fonction:");
sortie (0);

printf ("\ n La valeur probable de x2 est: =% d", x2);
x3 = 12324;
if (setsockopt (x1, sol_socket, so_sndbuf, (char *) & x3, sizeof (x3)) < 0 )

Perror ("Les chances de ne pas répondre");
sortie (0);

x4 = sizeof (x3);
if (getockopt (x1, sol_socket, so_sndbuf, (char *) & x3, & x4) < 0 )

Perror ("La fonction ne répond pas correctement:");
sortie (0);

printf ("\ nthe tampon La valeur est =% d \ n", x3);
retour 0;

Sortir

Explication

Pour exécuter ce programme, nous devons inclure un fichier d'en-tête dans notre code source comme, et . Au début, nous créerons une prise pour appeler une fonction standard prise () et passer quelques paramètres standard à l'intérieur de sa parenthèse. Nous allons maintenant appeler la fonction getOCKOPT () pour prendre la valeur mise à jour pour une prise et la stocker à l'intérieur d'une variable nommée x2. Nous allons maintenant définir la valeur sur la prise en appelant la fonction SetSockOpt (). Après cela, nous vérifierons à nouveau la valeur de la prise dans le tampon à l'aide de la fonction getockopt () et imprimer sa valeur.

Exemple-2

Ici, nous verrons un autre exemple de la fonction setSockpt ().

#inclure
#inclure
#inclure
#inclure
#inclure
#inclure
int Main (vide);
int main ()

int x1;
int x2;
socklen_t x3 = sizeof (x2);
/ * Créez la définition fonctionnelle * /
if ((x1 = socket (pf_inet, sock_stream, ipproto_tcp)) < 0 )

Perror ("Création de l'appareil:");
exit (exit_failure);

/ * Vérification de l'état du périphérique fonctionnel * /
if (getockopt (x1, sol_socket, so_keepalive, & x2, & x3) < 0 )

Perror ("La fonction peut ne pas répondre correctement:");
Fermer (x1);
exit (exit_failure);

printf ("L'état de la fonction de réponse est:% s \ n", (x2 ? " ALLUMÉ ÉTEINT " ) ) ;
/ * Activer l'option fonctionnelle * /
x2 = 1;
x3 = sizeof (x2);
if (setsockopt (x1, sol_socket, so_keepalive, & x2, x3) < 0 )

Perror ("détectant un défaut");
Fermer (x1);
exit (exit_failure);

printf ("Cette valeur fonctionnelle est installée: \ n");
/ * Vérifier à nouveau l'état * /
if (getockopt (x1, sol_socket, so_keepalive, & x2, & x3) < 0 )

Perror ("Vérifier une autre fois:");
Fermer (x1);
exit (exit_failure);

printf ("Vérification de la réponse en cours:% s \ n", (x2 ? " ALLUMÉ ÉTEINT " ) ) ;
Fermer (x1);
exit (exit_success);
retour 0;

Sortir

Explication

Dans cet exemple de programmation, nous créerons d'abord une prise à l'aide de la fonction Socket () et passerons quelques arguments à l'intérieur de sa parenthèse pour faire la prise. Après cela, nous appellerons la fonction getockopt () pour vérifier les états de socket. Nous allons maintenant appeler la fonction SetSockOPT () pour définir l'état en mode actif. Nous allons maintenant vérifier à nouveau l'état de la prise pour exécuter la fonction getOCKOPT () et imprimer l'état actuel de la prise en utilisant "Allumé ou éteint" mode. En fait, avec l'aide de ce programme, nous voulons comprendre si l'état Keepalive de la prise est actif ou non.

Conclusion

À partir des caractéristiques, de la mise en œuvre et de la programmation de la fonction SetSockOPT (), il est très bien pour nous que cette fonction est vraiment utile dans le cas de la prise aux différents niveaux de réseau. Avec l'aide de la fonction SetSockOPT (), nous pouvons faire différentes choses comme la manipulation de la durée de l'envoi et de la réception du tampon, leurs délais d'attente, etc. Il nous fournit également l'installation de multidiffusion.