Machine : www.alias1.com
Adresses IP : 127.0.0.1
Alias : www.alias2.com, www.alias3.com
Tous ceci est parfait sauf que Visual Studio, m'informe que la méthode GetHostByAddress
est obsolète et me conseille de la remplacer par la méthode GetHostEntry. Le problème est que quand j'utilise GetHostEntry dans le programme précédent j'obtiens juste :
Machine : www.alias1.com
Adresses IP : 127.0.0.1
et pas les noms d'hôtes www.alias2.com etwww.alias3.com
Savez-vous pourquoi ? Peut-on alors vraiment se passer de GetHostByAddress
dans ce cas ?
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 8 sept. 2006 à 10:01
Salut,
Ce post explique pourquoi cela agit comme ca, cependant c'est vrai que c'est dommage qu'on ne puisse pas reproduire le comportement exact de GetHostByAddress.
Le fait que cette méthode soit dépréciée ne t'oblige pas a ne plus l'utiliser, et je pense que dans ton cas si tu as absolument besoin de ces Alias, continue a t'en servir tant qu'il n'y a pas de solution alternative
cs_mathmax
Messages postés403Date d'inscriptionvendredi 28 octobre 2005StatutMembreDernière intervention31 août 2008 8 sept. 2006 à 16:14
En fait dans ton post, ils parlent de la méthode GetHostByName(). Si j'ai bien compris (je ne suis pas très fort en anglais...), la propriété Aliases de l'instance de IPHostEntry retourné par GetHostByName(nomHote) ne retourne une valeur que si nomHote est un alias. J'ai pu le vérifier comme ceci :
J'ai d'abord placé dans mon fichier hosts les lignes suivantes :
using System;
using System.Net;
public class adresses
{
public static void Main()
{
string[] names = { "Hote", "AliasDeHote", "aliasDeAliasDeHote" };
foreach (string name in names)
{
IPHostEntry adresseMachine = Dns.GetHostByName(name);
Console.Out.WriteLine("Machine : " + adresseMachine.HostName);
Console.Out.WriteLine("Adresses IP : " + adresseMachine.AddressList[0]);
if (adresseMachine.Aliases.Length != 0)
{
Console.Out.Write("Alias : " + adresseMachine.Aliases[0]);
for (int i = 1; i < adresseMachine.Aliases.Length; i++)
Console.Out.Write(", " + adresseMachine.Aliases[i]);
Console.Out.WriteLine();
}
Console.Out.WriteLine("***********************************************");
Console.Out.WriteLine();
}
}
}
J'obtiens alors :
Machine : Hote
Adresses IP : 127.0.0.1
*********************************************
Machine : Hote
Adresses IP : 127.0.0.1
Alias : AliasDeHote
*********************************************
Machine : AliasDeHote
Adresses IP : 127.0.0.1
Alias : aliasDeAliasDeHote
*********************************************
Ce qui m'étonne est que les noms Alias2DeHote et Alias3DeHote n'aparaissent jamais dans la propriété aliases. Comme ci cette propriété ne pouvait reçevoir qu'un seul alias...pourtant c'est un tableau ! Je ne comprends pas alors trop l'utilité de la propriété aliases dans ce cas...
Si je remplace dans le programme précedent GetHostByName() par GetHostEntry() alors la propriété aliases ne retourne rien.
Dans le cas de GetHostByAddress(), la propriété de aliases retourne tous les alias de l'adresse donnée en paramètre, mais pas les sous-alias. Si là encore on remplace cette méthode par
GetHostEntry() alors la propriété aliases ne retourne toujours rien.
Décidement je ne comprends pas pourquoi la propriété aliases n'est
jamais remplie quand on obtient une instance de IPHostEntry avec
GetHostEntry() ?? Quel en est l'intérêt ?
Mathmax