54 votes

Obtenir les adresses IPv4 de DNS.GetHostEntry()

J'ai ici un code qui fonctionne très bien sur les machines IPv4, mais sur notre serveur de construction (un IPv6), il échoue. En quelques mots :

IPHostEntry ipHostEntry = Dns.GetHostEntry(string.Empty);

La documentation de GetHostEntry indique qu'en passant par string.Empty, on obtient l'adresse IPv4 de l'hôte local. C'est ce que je veux. Le problème est qu'il renvoie la chaîne "::1 :" sur notre machine IPv6, qui, je pense, est l'adresse IPv6.

Pinging de la machine depuis n'importe quelle autre machine IPv4 donne une bonne adresse IPv4... et faire un "ping -4 machinename" à partir d'elle-même donne l'adresse IPv4 correcte.... mais l'envoyer régulièrement à partir d'elle-même donne "::1 :".

Comment puis-je obtenir l'IPv4 de cette machine, à partir d'elle-même ?

-1voto

Ravi Shankar Points 53

Pour trouver toutes les listes d'adresses valides, voici le code que j'ai utilisé

public static IEnumerable<string> GetAddresses()
{
      var host = Dns.GetHostEntry(Dns.GetHostName());
      return (from ip in host.AddressList where ip.AddressFamily == AddressFamily.lo select ip.ToString()).ToList();
}

-1voto

haqsek2 group Points 3

Vous pouvez obtenir tous Adresse IPv4 du DNS en utilisant ce code :

IPs[] ipv4Addresses = Array.FindAll(
           Dns.GetHostEntry(string.Empty).AddressList,
           address => address.AddressFamily == AddressFamily.InterNetwork);

-5voto

not nor Points 3

IPv6

lblIP.Text = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName).AddressList(0).ToString()

IPv4

lblIP.Text = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName).AddressList(1).ToString()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X