voila, j'ai une adresse IP du style 192.168.0.4 et je doi la transformer en décimal. Existe-t-il une fonction pouvant la transformer directement ou dois-je transformer chaque paquet en héxa puis en décimal?
voila, j'ai une adresse IP du style 192.168.0.4 et je doi la transformer en décimal. Existe-t-il une fonction pouvant la transformer directement ou dois-je transformer chaque paquet en héxa puis en décimal?
Une petite question ?
Pourquoi convertir d'abord en hexa ??
Sinon, il est tres facile de contertir ton adresse IP en décimal avec une petite fonction de quelques lignes.
Consignes aux jeunes padawans : une image vaut 1000 mots !
- Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
- Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
-ton poste tu dois marquer quand la bonne réponse tu as obtenu.
Je suppose que tu veux dire en numérique (tableau de 4 unsigned char, par exemple)Envoyé par mrtatou
sscanf(), avec "%d"...
Si tu es flemmard...
http://emmanuel-delahaye.developpez.com/clib.htm
Module IPV4
Bonjour,
Ce type d'adresse est déjà en décimal...voila, j'ai une adresse IP du style 192.168.0.4 et je doi la transformer en décimal.
exemple :
http://www.google.fr
http://66.249.93.104 [décimal]
http://0x42.0xF9.0x5D.0x68 [dotted hex]
http://0x42F95D68 [long hex]
P.S : Fonctionne pas sous IE mais très bien sous firefox...
[edit] : ah la question était peut être, comment faire du atoi() ?
man inet_addr: tu devrais trouver ton bonheur (ca marche sous linux et windows:: le reste je sais pas !)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 char destaddr[]="192.168.0.12"; struct sockaddr_in dest_addr; dest_addr.sin_addr.s_addr = inet_addr (destaddr);
Prends en compte le fait que le résultat fourni par inet_addr() est (a priori) en Big-Endian
Comment ça 'a-priori' ? C'est pas très précis. Le format est soit H (Host), soit N (Network).Envoyé par loufoque
Il faut choisir la bonne fonction :
http://www.linux-france.org/article/man-fr/man3/inet_makeaddr-3.html
inet_addr() retourne l'adresse au format network : On peut mettre directement le résultat retourné dans une structure sockaddr_in.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
A priori car j'en n'étais pas sûr, j'ai seulement utilisé mes dons de devin.Comment ça 'a-priori' ? C'est pas très précis. Le format est soit H (Host), soit N (Network).
Dans ce cas, vérifie. On est censé fournir des informations fiables et vérifiées.Envoyé par loufoque
donc voila ce que je fais:
mais ca ne marche pas alors que je voudrai que ca me donne: 12625921
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 ...... long ip =inet_addr(192.168.0.1); printf("%ld",ip); ......
Cela devrait marcher... je sais pas si l'erreur vient du manque de guillement dans ton inet_addr ou plutôt du fait que je l'affiche sous chaîne de caractères
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 struct sockaddr_in dest; dest.sin_addr.s_addr = inet_addr("192.168.0.1"); printf("%s", dest.sin_addr.s_addr);![]()
désolé mais ton code ne fonctionne pas chez moi...
"erreur de segmentation"
T'as essayé ton code avec l'adresse entre guillements ?
oui oui!
peut etre qu'il me manque des biblio?
pourtant j'ai bien mis "<sys/socket.h>", "<netinet/in.h>" et "<arpa/inet.h>"...
Normal, la variable dest.sin_addr.s_addr est un unsigned long d'après la définition donnée par la page man inet.
Pourquoi tenter de l'afficher comme une chaîne de caractère?
Jc
Je sais pas, mais je crois qu'une fois je l'avais affichée au format décimal en tant que chaine de caractère:
ba juste pour une vérification...
mais c'est vrai que ca ne m'est pas utile pour la suite.
comment vérifier que ca a bien fonctionné alors?
Envoyé par mrtatou
Page man
Code : Sélectionner tout - Visualiser dans une fenêtre à part char *inet_ntoa(struct in_addr in);
Partager