Hallo zusammen,
ich habe ein Problem mit einem bereits vielfach besprochenen Thema. Es geht dabei um die Ermittlung des Hostnames über eine IP-Addresse. (Bitte keine "RTFM"- Hinweise, ich habe bereits alles gelesen, komme aber nicht zum Ergebnis!)
try
{
IPAddress IPstring = IPAddress.Parse(IPAdresse);
IPHostEntry he = Dns.GetHostByAddress(IPstring);
String[] Hostnamen = he.Aliases;
MessageBox.Show ("Angeforderte IP : " + IPstring.ToString() +"\n"
+"Anzahl der Aliases : " + he.Aliases.Length.ToString() +"\n");
return Hostnamen;
}
Der Sourcecode ist nicht sonderlich schwierig zu verstehen, erstaunlicherweise bekomme ich aber keinen Hostnamen zurückgeliefert. Die Länge des Alias-Arrays ist immer "0". Dies gilt für Anfragen des Localhost (127.0.0.1), eines LAN-Clients (z.B. 192.168.0.1) und auch für IPs der Klasse A.
Die Auflösung der IP-Adresse über den Hostnamen (Dns.GetHostByName(string)) funktioniert einwandfrei.
Über Hilfe wäre ich extrem glücklich!
Thorsten Müller
versuche mal...
string address = "127.0.0.1";
try
{
Console.WriteLine(System.Dns.GetHostByAddress(address).HostName);
}
catch (System.Net.SocketException ex)
{
Console.WriteLine(ex.Message);
}
grtz
chief
ne daran liegts nicht 😉
dir fehlen sicher die hosteinträge in:
C:\WINDOWS\system32\drivers\etc -> host
einfach mit edit öffnen und ip plus name nach localhost hinzufügen also:
.
.
.
127.0.0.1 localhost
172.30.5.211 lala1
172.30.5.211 lala2
172.30.5.211 lala3
.
.
.
aliases.length = 0 heisst lediglich dass dein rechner kein alias hat und dir zusatzeinträge in der oben genannten datei fehlen.
good luck 😉
EDIT:
hab dies anhand von dem von dir hinterlassen code ausprobiert -> positive/funktioniert
posted by the real prince of persia
Vielen Dank für die Hilfe,
aber leider ist das noch immer nicht des Rätsels Lösung. Vielleicht habe ich mich unglücklich ausgedrückt. Ich möchte über den DNS-Server den Namen eines Rechners auflösen, von dem ich lediglich über die IP verfüge.
Bin ich vielleicht auf dem völlig falschen Weg?
Thorsten
hier bitte schön...
IPHostEntry he = Dns.Resolve("172.30.5.211");
MessageBox.Show("Hostname: "+he.HostName);
string[] hostnamen = he.Aliases;
for(int i=0; i<hostnamen.Length; i++)
{
MessageBox.Show("Und hier die Aliases: "+hostnamen[i]);
}
posted by the real prince of persia
Genau!
Es muss "Dns.Resolve" heissen und nicht "Dns.GetHostByAddress".
Vielen Dank!
Thorsten
kein problem.
bin froh, dass ich weiterhelfen konnte. 🙂
posted by the real prince of persia