2010-06-22 9 views
2

J'ai utilisé ce hostInfo.AddressList pour obtenir l'adresse IP de la machine. Il le renvoie au format lettre, comme ff80 :: c9c9: b2af: aa0f: e2d2% 12, ce que je veux, c'est le formater en un format d'adresse IP (chiffres).Formatage de l'adresse IP en C#

Une aide?

en utilisant C#, .net 3.5

+0

Pouvez-vous s'il vous plaît poster le code que vous avez en ce moment? – Robaticus

Répondre

6

Le format que vous avez donné est la manière correcte de représenter une adresse IPv6. Il n'existe pas de format A.B.C.D pour représenter les adresses IPv6.

En ce moment, vous obtenez une liste d'adresses IPv4 et IPv6. Vous cherchez les IPv4.

string GetFirstIPv4Address() 
{ 
    IPAddress[] addressList = Dns.GetHostAddresses(hostname); 

    foreach (IPAddress ip in addressList) 
    { 
     if (ip.AddressFamily.ToString() == "InterNetwork") 
     { 
      //This is an IPv4 address 
      return ip.ToString(); 
     } 
    } 
    return "127.0.0.1"; 
} 
4

Ce est un format d'adresse IP, une adresse IP spécifique IPv6. Il semble que vous souhaitiez une adresse IPv4, mais les adresses IPv6 ne peuvent pas être converties en adresses IPv4 sans savoir comment votre réseau est configuré.

Si votre hôte dispose d'une adresse v6, je vous suggère de rester fidèle à cette adresse. Vous ne devriez certainement pas essayer de convertir les adresses au niveau de l'application.

+0

donc fondamentalement, il n'y a aucun moyen d'obtenir un format IPv4 du tout dans ce cas? – sarsnake

+0

Non, il n'y a pas de forme quadrilatérale en pointillés d'une adresse IPv6, car les adresses IPv6 ne sont pas 32 bits. –