Laden...

Netzwerkprogrammierung

Erstellt von Thorsten73 vor 19 Jahren Letzter Beitrag vor 19 Jahren 6.244 Views
T
Thorsten73 Themenstarter:in
3 Beiträge seit 2004
vor 19 Jahren
Netzwerkprogrammierung

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

C
1.215 Beiträge seit 2004
vor 19 Jahren

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

R
139 Beiträge seit 2004
vor 19 Jahren

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

T
Thorsten73 Themenstarter:in
3 Beiträge seit 2004
vor 19 Jahren

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

R
139 Beiträge seit 2004
vor 19 Jahren

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

T
Thorsten73 Themenstarter:in
3 Beiträge seit 2004
vor 19 Jahren

Genau!

Es muss "Dns.Resolve" heissen und nicht "Dns.GetHostByAddress".

Vielen Dank!

Thorsten

R
139 Beiträge seit 2004
vor 19 Jahren

kein problem.
bin froh, dass ich weiterhelfen konnte. 🙂

posted by the real prince of persia