IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

conversion ip


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 92
    Par défaut conversion ip
    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?

  2. #2
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    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.

  3. #3
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut Re: conversion ip
    Citation Envoyé par mrtatou
    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?
    Je suppose que tu veux dire en numérique (tableau de 4 unsigned char, par exemple)

    sscanf(), avec "%d"...

    Si tu es flemmard...

    http://emmanuel-delahaye.developpez.com/clib.htm
    Module IPV4

  4. #4
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Par défaut
    Bonjour,

    voila, j'ai une adresse IP du style 192.168.0.4 et je doi la transformer en décimal.
    Ce type d'adresse est déjà 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() ?

  5. #5
    Membre éprouvé
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Par défaut
    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);

  6. #6
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Prends en compte le fait que le résultat fourni par inet_addr() est (a priori) en Big-Endian

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par loufoque
    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).

    Il faut choisir la bonne fonction :

    http://www.linux-france.org/article/man-fr/man3/inet_makeaddr-3.html

  8. #8
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    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.

  9. #9
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Comment ça 'a-priori' ? C'est pas très précis. Le format est soit H (Host), soit N (Network).
    A priori car j'en n'étais pas sûr, j'ai seulement utilisé mes dons de devin.

  10. #10
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par loufoque
    Comment ça 'a-priori' ? C'est pas très précis. Le format est soit H (Host), soit N (Network).
    A priori car j'en n'étais pas sûr, j'ai seulement utilisé mes dons de devin.
    Dans ce cas, vérifie. On est censé fournir des informations fiables et vérifiées.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 92
    Par défaut
    donc voila ce que je fais:
    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);
    ......
    mais ca ne marche pas alors que je voudrai que ca me donne: 12625921

  12. #12
    Membre émérite
    Avatar de Freed0
    Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    635
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 635
    Par défaut
    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);
    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

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 92
    Par défaut
    désolé mais ton code ne fonctionne pas chez moi...
    "erreur de segmentation"

  14. #14
    Membre émérite
    Avatar de Freed0
    Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    635
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 635
    Par défaut
    T'as essayé ton code avec l'adresse entre guillements ?

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 92
    Par défaut
    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>"...

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 92
    Par défaut
    et quand je met un "%d" ca m'affiche : -1203338158

  17. #17
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    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

  18. #18
    Membre émérite
    Avatar de Freed0
    Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    635
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 635
    Par défaut
    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 :

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 92
    Par défaut
    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?

  20. #20
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par mrtatou
    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?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char *inet_ntoa(struct in_addr in);
    Page man

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Conversion Assembleur Motorola 68xxx en Intel 80xxx
    Par markham dans le forum Autres architectures
    Réponses: 3
    Dernier message: 22/11/2002, 20h09
  2. [MSXML] Comment empécher la conversion des entités ?
    Par nima dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 08/11/2002, 14h14
  3. Algorithme de conversion de RTF vers HTML
    Par youtch dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 10/09/2002, 12h35
  4. [Conversions] Millisecondes...
    Par agh dans le forum Langage
    Réponses: 2
    Dernier message: 06/08/2002, 11h25
  5. Réponses: 2
    Dernier message: 05/06/2002, 12h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo