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 :

convertir Ipv6 vers Ipv4 (System.Net.IPaddress)


Sujet :

C#

  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Par défaut convertir Ipv6 vers Ipv4 (System.Net.IPaddress)
    Bonjour à tous.

    Bon je me doute que personne ne va savoir me répondre, mais bon... l'espoir fait vivre comme on dit

    Mon probleme : d'une machine à l'autre, lorsque je récupere (la meme) adresse ip dans System.Net.IPaddress celle ci sera en ipv4 sur un poste, ou en ipv6 sur l'autre poste.

    C'est un peu frustrant pour l'affichage, personne chez nous n'est encore habitué aux ipv6.

    Sauriez vous comment convertir une ipv6 :
    IPaddress.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6
    en ipv4 :
    IPaddress.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork

    ???
    PS :
    alors j'ai lu sur le net qu'il existe des ipv6:
    • compatible ipv4
    • mappée ipv4
    • j'ai meme lu un article qui parle de ipv6 "Teredo"



    EN BREF : je veux afficher qu format v4,les ip local de notre reseau 192.168.1.XXX/255.255.255.0 ; et ce, que je sois sur un poste XP (pas de problem) ou Vista (c'est la où j'ai le probleme car elles apparaissent en v6)

  2. #2
    Membre expérimenté Avatar de el_pedro
    Homme Profil pro
    Inscrit en
    Août 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 200
    Par défaut
    Salut.

    Tu ne peux pas convertir d'IPv6 en IPv4 à proprement parlé. IPv6 est sur 128 bits alors que IPv4 sur 32.

    Ce que tu peux faire par contre, c'est représenter l'adresse sous forme décimale et non plus hexa.

    Ainsi 2001:0db8:0000:85a3:0000:0000:ac1f:8001
    deviendrai
    08193.03512.00000.34211.00000.00000.44063.32769

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Par défaut
    Salut, et merci pour ta réponse.

    A noter que j'ai toujours employé le mot 'Afficher' et non 'travailler sur' car je suis bien conscient de ce que tu viens d'écrire.

    Quoi qu'il en soit dans mon contexte notre reseau (donc tous les postes clients) sont en 192.168.1.XXX/255.255.255.0 donc en toute logique il n'y a pas de raison qu'on ne puisse pas, à partir de ces ips que je recois en v6, les afficher en v4. Autrement dit, met 32 bits de données dans une boite de 128, tu dois pouvoir récupérer ces 32bits en faisant abstraction de ce qui est autour, non?

    Ok j'ai peut etre trouvé une solution, à valider tout de meme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IPHostEntry Dns.GetHostEntry(IPAddress adresse)
    En lui donnant mon IPAddress dont AdressFamilly vaut InterNetworkV6
    j'arrive à récupérer mon addresse sous son format V4

    Par contre je crains d'avoir de mauvaises surprise, selon le client qui va se connecter

    En gros j'avance dans le brouillard complet...

  4. #4
    Membre expérimenté Avatar de el_pedro
    Homme Profil pro
    Inscrit en
    Août 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 200
    Par défaut
    Logique, cette conversion est impossible, c'est comme garer un bus sur une place de voiture, ça dépasse dans tout les sens. Une adresse v6 est 4 fois plus longue qu'une adresse v4.

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Par défaut
    arg, et pourtant on peut convertir un uint en ushort quand on sait que la valeur ne depasse pas 256 ce qui est mon cas...

    Bon je vais pour l'instant rester sur ma solution GetHostEntry, en esperant que ca ne me retourne pas plusieurs ipv4 à l'avenir (genre l'ip locale et l'ip internet, ou l'ip d'une autre carte reseau de la meme machine).

  6. #6
    Membre expérimenté Avatar de el_pedro
    Homme Profil pro
    Inscrit en
    Août 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 200
    Par défaut
    Ah, tu est sur de pas dépasser les 255 !!!
    Et bien, oui, en les convertissant, peux être, mais gare à toi si tu dépasse.

Discussions similaires

  1. Convertir un reseau ipv6 vers un reseau ipv4
    Par Trevor dans le forum Réseau
    Réponses: 0
    Dernier message: 05/04/2011, 10h05
  2. convertion "10.0.0.5" en System.Net.IPAddress?
    Par trois_1 dans le forum VB.NET
    Réponses: 4
    Dernier message: 19/12/2007, 23h18
  3. [C++ 2.0] Comment convertir un ULONG en System::DateTime ?
    Par hrp dans le forum Framework .NET
    Réponses: 1
    Dernier message: 22/06/2006, 20h20
  4. SSH - Ipv6 ou Ipv4 ?
    Par byloute dans le forum Réseau
    Réponses: 5
    Dernier message: 31/10/2005, 13h46
  5. [C#] Fonction pour convertir string[] vers ArrayList
    Par luimême dans le forum Windows Forms
    Réponses: 6
    Dernier message: 07/04/2005, 13h25

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