Exemple: Fonction GetsockName
Jetons un coup d'œil à l'exemple de la fonction getockName en c. Utilisez le raccourci «Ctrl + Alt + T» pour ouvrir rapidement l'application de ligne de commande sur votre écran. Cela peut prendre seulement 10 secondes, et votre terminal sera prêt à l'emploi. Dans la zone d'instructions du terminal, vous devez taper la requête «Touch» avec le «nom de fichier» pour générer un tout nouveau fichier dans votre système, je.e., vide. De nombreuses options sont disponibles pour ouvrir ce fichier nouvellement généré, i.e., Vim, nano ou éditeur de texte. Les utilisateurs peuvent d'abord préférer l'ouvrir dans l'éditeur de texte, créer un code, mettre à jour ou modifier le code, puis exécuter dans le shell. Cela pourrait être fait en tapant simplement sur le nom du fichier résidant dans le dossier «Accueil» de l'explorateur de fichiers. Si les utilisateurs souhaitent ouvrir le fichier vide dans l'éditeur «GNU Nano», ils peuvent utiliser la commande «Nano» terminale. Écrivez cette instruction et appuyez sur Entrée pour l'exécuter. Les instructions pour la création de fichiers et l'ouverture sont répertoriées:
Le code C commence par l'inclusion de certains des fichiers d'en-tête principaux et importants. Le mot-clé «inclure» est utilisé avec le panneau de hachage pour le faire. Un total de 11 en-têtes sont utilisés ici. Le «stdio.H ”a été utilisé pour obtenir les entrées et sorties standard. Le «unistd.h ”. est utilisé pour accéder à l'API du système d'exploitation POSIX, i.e., Systèmes Linux et Unix. Le «stdlib.L'en-tête h ”est une bibliothèque standard à des fins générales, i.e., Conversions de type, gestion des processus, allocations de stockage, etc. Le «errno.h ”est principalement utilisé pour les problèmes d'erreur et les rapports. La «chaîne.Le module H ”pour C est utilisé pour gérer les chaînes avec certaines des autres fonctions. Les «systèmes / types.L'en-tête h ”est utilisé pour définir les types de données des variables et les fonctions utilisées dans notre code de programme.
Le fichier d'en-tête «SYS / STAT.h ”est utilisé ici pour décrire la construction des données d'information renvoyées. La bibliothèque d'en-tête «Sys / socket.h ”sera utilisé pour utiliser les fonctions et mutable des prises dans notre code. Le «sys / un.La bibliothèque d'en-tête h ”est là pour enregistrer les adresses des prises de type Unix. Le «netint / in.H ”est spécialement conçu pour initialiser le type de structure mutable pour l'adresse IPv6 en boucle.
Les variables INET Addrstrlen ou INET6 Addrstrlen sont généralement définies dans le «ARPA / INET.bibliothèque d'en-tête h ”. Après tous les fichiers d'en-tête, nous avons implémenté une fonction définie par l'utilisateur nommé «Showerror», prenant un argument de pointeur de caractère constant «E». Cet argument de pointeur fait référence à certaines erreurs trouvées jusqu'à présent dans notre code. Pour le langage de programmation C, la méthode d'erreur POSIX, i.e., Perror, est utilisé pour afficher un message de réponse d'erreur à «stderr» en fonction d'une condition d'erreur Errno. Il publie «STR» et un message de réponse d'erreur se conformant à l'erreur mutable universelle, tel que déterminé par le code du programme. La fonction «Perror» utilise l'argument «E» comme message d'erreur pour l'afficher. La fonction «Exit (1)» est là pour quitter ou terminer la fonction «doucheror ()» en ce moment:
Voici la fonction «sock_addr» du type de pointeur prenant trois arguments dans ses paramètres. Le paramètre «S» représente la prise, et la variable de pointeur de caractères «buf» sera utilisée pour stocker les données de socket dedans. Tandis que le dernier argument «bufsize» d'un type «size_t» d'objet sera utilisé pour définir la taille d'une variable tampon ou simplement de tampon. Dans cette fonction, nous avons créé une structure nommée «addr» pour stocker l'adresse de socket. La longueur de la variable «addr» a été stockée dans la variable de type entier «len» en appliquant la fonction «Sizeof».
La fonction getockName () a été utilisée ici pour acquérir le nom d'une prise. Cette fonction utilise la prise, les adresses de socket et la longueur de socket comme arguments d'entrée. Quelle que soit la réponse pour la fonction getockName, la réponse sera stockée dans la variable "Z", je.e., collecté ou non. L'instruction «IF» est là pour vérifier la condition que la variable «z» a reçu le code d'état de retour comme -1, je.e., FAUX. Cela signifie que si vous vous trouvez incapable d'obtenir le nom d'une prise, il reviendra Null à la fonction d'appel. La fonction «snprintf» est utilisée pour obtenir l'adresse de la prise, la convertir en formulaire de chaîne et l'afficher sur le shell. Pour cela, la taille du tampon et du tampon doit être utilisée comme argument. L'adresse du port de socket est utilisée dans la fonction «NTOHS» pour la convertir en code d'octet hôte:
La fonction principale () prend 4 arguments dans son paramètre. La variable de type de structure «addr» pour une prise est déclarée avec la variable de caractères «buf» de taille 64. Ensuite, nous avons créé une prise Internet IPv4 en utilisant la fonction de socket. Cet statut de socket renvoie le code et il sera enregistré dans la variable "SCK_INET". Si le socket ne crée pas avec succès, comme le SCK_INET n'est pas égal à zéro, il appellera le message «Downror» tout en le faisant passer un texte simple «socket ()».
Après cela, nous avons essayé de créer une adresse "AF_INET". La fonction memset () est utilisée pour initialiser l'adresse d'une prise à 0. La famille d'adresses de socket a été initialisée comme «AF_INET», son port est également déclaré tandis que la fonction HTONS est là pour traduire le format d'octet hôte au format d'octets de réseau. La fonction INET_ATON utilise l'adresse IP locale pour la convertir au format de chaîne standard et l'enregistrer dans la variable d'adresse de socket. La taille de la variable d'adresse est stockée dans la variable «len». La fonction bind () lie l'adresse à la prise et enregistre le code de retour d'état dans "Z". Si le code d'état est «-1», je.e., Faux, il appellera le message «doucheror» tout en appelant la fonction bind () dedans. Si la fonction «sock_addr ()» ne peut pas être appelée, elle appellera également la fonction «doucheror» prenant «sock_addr» comme argument. L'instruction printf affiche le nom stocké dans un tampon:
La fonction de clôture est appelée pour fermer la prise Internet IPv4:
Après la compilation et l'exécution, nous avons le nom de socket sur lequel notre système est connecté:
Conclusion:
Cet article est en effet un besoin pour chaque utilisateur C à la recherche avec impatience de l'exemple de «getockName» dans Linux. Nous avons discuté d'un seul exemple dans ce guide. Nous avons essayé de simplifier nos utilisateurs car le code a été divisé en morceaux. Nous espérons que vous trouverez cet article très utile. Découvrez d'autres articles sur les conseils pour plus de conseils et de tutoriels.