Procédures réseaux de conversion
I. Conversion des entiers :
Pour que les programmes soient portables sur toutes les machines il faut pouvoir convertir les représentions réseaux en représentation machine et vice et versa.
Les fonctions de conversion sont les suivantes :à include <arpa/inet.h>
· htonl (val) : host to network long : convertit une valeur sur 32 bits de la représentation machine vers la représentation réseaux.
· htons (val) : host to network short : convertit une valeur sur 16 bits de la représentation machine vers la représentation réseaux.
· ntohl (val) : network to host long : convertit une valeur sur 32 bits de la représentation réseaux vers la représentation machine.
· ntohs (val) : network to host short : convertit une valeur sur 16 bits de la représentation réseaux vers la représentation machine.
Exemples : Avant d’envoyer un entier dans un socket, il faut le passer au format réseau, par exemple :
nbre= htonl (nbre) ;
write (socket, &nbre, sizeof (nbre)) ;
Et après l’avoir lu, il faut le passer au format interne :
read (socket, &nbre, sizeof (nbre)) ;
nbre = ntohl (nbre);
II. Conversion des adresses :
· inet_ntoa : (network to ascii) IPV4
Convertit l'adresse Internet donnée dans l'ordre des octets du réseau en une chaîne de caractères dans la notation décimale pointée.
Renvoie l’adresse IP sous forme de chaine de caractère.
Syntaxe :
Exemple : printf("%s", inet_ntoa(adresseIP.sin_addr));
· inet_addr : IPV4
La fonction inet_addr convertit l’adresse IP en un bloc d’octets ordonné lisible sur le réseau. Elle retourne -1 si erreur.
Syntaxe :
Exemple :
my_addr.sin_addr.s_addr = inet_addr("192.0.0.1”);