Bonjour à tous :)
Comment convertir une variable de type IpAddr_t en un char* ?
J'ai beau chercher partout sur le net, je ne trouve aucune solution :(
Merci d'avance !
Version imprimable
Bonjour à tous :)
Comment convertir une variable de type IpAddr_t en un char* ?
J'ai beau chercher partout sur le net, je ne trouve aucune solution :(
Merci d'avance !
l'utilisation de htonl(inet_addr(char *)) permet de convertir une adresse de char vers unsigned long int.
pour la conversion inverse, inet_ntoa() te permet de faire la conversion vers une structure in_addr que tu pourras afficher ulterieurement.
Euh désolé mais je ne vois pas très bien :oops:
Peux-tu m'expliquer, à partir de l'exemple suivant, comment convertir ipAddr en pchIpAddr ? :
Merci encore :oops:Code:
1
2
3 IpAddr_t ipAddr; char* pchIpAddr = new char[100]; // 100 au pif
bien penser a inclure la librairie qui va bien et le tour est joué.Code:
1
2
3 struct in_addr InternetAddr;//define the container InternetAddr.S_un.S_addr = htonl(IP_Src_add); //use htonl if the value was transfered on the net std::cout << "IP Source: "<< inet_ntoa(InternetAddr)<<std::endl;//simply call inet_ntoa
J'avais exactement le meme probleme que toi, la solution se trouve dans MSDN...
Je ne vois toujours pas de variable de type IpAddr_t dans ton exemple :oops:
Je n'utilise pas de IpAddr_t dans mes prog. Peux tu me dire quelle librairie tu utilises, quel environnement?
Si par hasard tu as quelque part dans tes headers la chose suivante:
ou quelque chose du genre, alors il te suffit de faire:Code:typedef unsigned long IpAddr_t;
Ce code devrait sortir quelque chose du genre:Code:
1
2
3
4 struct in_addr InternetAddr; IpAddr_t ipAddr=12e010a; InternetAddr.S_un.S_addr = ipAddr; //htonl(ipAddr); //use htonl if the value was transfered on the net std::cout << "IP Source: "<< inet_ntoa(InternetAddr)<<std::endl;
IP Source: 10.1.46.1
Peut etre ai-je mal compris, que cherches tu reelement à faire?
Tu as une variable IpAddr_t qui contient une valeur du type 12e010a:
1: tu cherches a afficher le contenu 12e010a
2: tu cherches a afficher le contenu 10.1.46.1
?
Je cherchais effectiver à afficher le contenu 12e010a :)
Merci pour ton exemple détaillé ! :yaisse2:
Pour afficher le contenue il suffit de faire:
cf : Formater l'affichage en hexadecimalCode:
1
2IpAddr_t ipAddr=12e010a; std::cout << std::hex<< ipAddr<<std::endl;