C Exemple de fonction init_ntop

C Exemple de fonction init_ntop
La fonction init_ntop () est une fonctionnalité utilisée pour convertir une adresse IPv6 IPv4 et 128 bits en un format lisible. Contrairement à la fonction INIT_PTOP, l'adresse est convertie sous la forme originale car elle a été convertie en une forme numérique binaire en utilisant init_pton (). Cela signifie que ces deux fonctions sont utilisables à des fins de confidentialité pour le chiffrement et le décryptage des adresses IP.

Syntaxe

#inclure
# CONSTACTER * INET_NTOP (int af, const void * source, caractères * dst, socklen_t size);

Tout comme init_pton, il a trois arguments principaux comme paramètre, mais il a également un 4ème argument qui traite de la taille de la prise / tampon qui est pointé par «DST."Ici, nous décrirons les paramètres de la fonction init_ntop ().

Arguments

La description générale de cette fonction est que cette fonction convertit l'adresse IP au format binaire lisible. Ceci est principalement une forme numérique de texte simple. Cette conversion se fait via le «SRC» spécifié, qui le convertit au format texte, puis la valeur résultante est placée dans le «DST."Il est nécessaire de vérifier la taille / l'espace de la zone DST (destination). Parce que si l'endroit est suffisant pour stocker l'adresse, l'adresse résultante est placée. Il doit y avoir une extension de tampon gratuite dans le deuxième cas pour ajouter l'adresse.

L'argument «AF» fait référence à l'adresse de la famille d'Internet. Il peut être af_inet pour ipv4 par défaut ou af_inet6 pour ipv6. Le paramètre arguant «SRC» montre le tampon tenant l'adresse Internet IPv4 si l'argument «AF» est AF_INET ou IPv6. L'adresse fournie doit être dans l'ordre du réseau octet.

Tout comme l'argument source, la destination «DS» fait référence au tampon, où la fonction init_ntop () stockera l'adresse résultante sous la forme d'une chaîne. Le 4ème spécifie l'argument de taille pointant vers la taille du tampon. Il est indiqué pour cet argument qu'il devrait toujours spécifier un argument non nul pour une destination. Pour les adresses IPv6, le tampon de stockage doit avoir un minimum de 46 octets, tandis que, dans le cas des adresses IPv4, le tampon doit être d'au moins 16 octets.

Pour attribuer le stockage sous la forme d'un tampon est nécessaire et doit être effectué au niveau prioritaire, car la taille est importante pour stocker l'adresse de la valeur résultante pour éviter tout problème lié à la taille. Nous avons défini deux contraintes pour permettre aux applications de déclarer / allouer des tampons facilement de taille précise pour prendre des adresses IPv4 et IPv6 au format de chaîne. Ces contraintes sont également définies dans la bibliothèque .

#define INET_ADDRSTLEN 16
#define Inet_addrstrlen 46

Valeur de retour

Le type de retour est la valeur obtenue par la fonction dans les deux cas; Soit il est appelé avec succès, soit terminé sans succès en raison de toute erreur. Mais il revient toujours; C'est pourquoi nous utilisons toujours le type de retour 'int' pour la fonction principale. Si la fonction réussit, inet_ntop () renvoie un pointeur qui est renvoyé au tampon qui contient l'adresse après le processus de conversion. D'un autre côté, si la fonction est infructueu.

Erreurs causées par la fonction init_ntop ()

De nombreuses erreurs possibles peuvent supprimer la fonction init_ntop () pour fonctionner efficacement, mais nous en avons mis en évidence principalement deux ici.

Eafnosupport

Un paramètre est un nombre non valide. En d'autres termes, il n'appartient pas à une famille du réseau soutenu.

Ésopc

Cette erreur se produit en raison de moins d'espace pour stocker l'adresse convertie. La destination «DST» n'est pas grande, ce qui conduit à un stockage suffisant pour stocker la valeur résultante ou l'adresse traduite. Donc l'errno mentionne la raison, puis ces erreurs sont supprimées.

Tout comme inet_pton, init_ntop est également lié à la programmation de socket. Parce que la fonction de socket contient l'argument de domaine comme un paramètre qui appartient à l'AF_INET (IP), donc dans le cas des deux protocoles, IPv4 ou IPv6 sont sélectionnés.

Implémentation de init_ntop ()

Avant de commencer la mise en œuvre, nous avons vu que l'utilisation et la description générale de cette fonction sont également partagées sur la page manuelle du système d'exploitation Ubuntu Linux pour faciliter l'utilisateur avec sa fonctionnalité de travail.

$ man inet_ntop

En utilisant la commande mentionnée ci-dessus, l'utilisateur est dirigé vers une page contenant toutes les descriptions de init_ntop (). Nous avons joint un extrait pour votre aide.

Exemple 1

Nous avons implémenté les exemples sur le système d'exploitation Linux; À cette fin, vous devez avoir un éditeur de texte pour y écrire des codes source. Alors que pour les valeurs résultantes, nous utiliserons le terminal Ubuntu. Ouvrez l'éditeur de texte par défaut d'Ubuntu et utilisez le code source mentionné ci-dessous pour démontrer le fonctionnement de init_ntop ().

Init_ntop () fonctionne en face de init_pton; Si vous avez un savoir-faire de init_pton (), vous comprendrez facilement la fonctionnalité. Sinon, la conversion d'adresses n'est pas trop difficile en utilisant ces fonctions dans le langage de programmation C.

En commençant par les bibliothèques, vous pouvez voir que nous avons utilisé un ARPA / INET.H Library, car elle contient toutes les informations concernant les adresses Internet. D'un autre côté, la bibliothèque de socket système doit également être dirigée car la connexion n'est pas possible sans elle.

#inclure
#inclure

Après les bibliothèques, nous avons utilisé les contraintes pour mentionner les adresses concernant les protocoles Internet 4 et 6. L'adresse fournie ici est un format binaire converti en un format numérique et facilement compréhensible. Deux structures sont initialisées ici pour TH4 et 6 IPS. De même, les deux tampons sont utilisés ici pour stocker les valeurs résultantes. En appelant la fonction init_ntop, il faut s'assurer que la taille du tampon n'est pas nul. Et puis, après la conversion, l'adresse est affichée. Dans l'autre partie, l'erreur doit être identifiée. Un cas similaire est avec SF_INET6.

L'exécution a besoin d'un compilateur. Ceci est un compilateur GCC. Avec le compilateur, le nom du fichier est mentionné. Son 'ntop.c 'est le nom d'un fichier.

$ gcc -o ntop ntop.c
$./ ntop

En exécution, vous verrez que les deux adresses pour les deux protocoles Internet sont affichées avec succès sans rencontrer d'erreur.

Exemple 2

Cet exemple implique l'utilisation de Inet_ntop () et inet_pton () fonctionne collectivement dans un seul code source C. La fonction pton () contient trois arguments avec l'adresse. En même temps, INET_NTOP () a 4 paramètres avec la taille du tampon. Premièrement, Pton () convertit l'adresse en format binaire avec des valeurs numériques peu facilement lisibles par les humains. Un init_ntop () le transforme en format de texte.

Compilez le code et exécutez-le.

Vous pouvez voir que l'adresse fournie comme une entrée s'affiche sans aucune modification en utilisant une chaîne simple pour créer une adresse au format texte.

Conclusion

Il est conclu que l'article «Exemple de fonction init_ntop» contient toutes les descriptions générales possibles concernant l'utilisation de la fonction NTOP () ainsi que les arguments qu'il utilise. Certaines erreurs ont également été mentionnées qui doivent être identifiées si quelque chose ne va pas concernant l'espace de stockage ou la destination source. Quoi qu'il en soit, nous avons utilisé deux exemples de base mais impactants pour démontrer le fonctionnement de cette fonction.