2010-07-15 11 views
10

Ich habe es geschafft, die IP-Adresse der verbundenen Clients mit dem folgenden Code zu erhalten, aber es scheint nicht möglich zu sein, den Hostnamen zu erhalten.Erhalte den Hostnamen von der IP-Adresse

Globals.connectedIPAddress = "" + IPAddress.Parse(((
    IPEndPoint)_client.Client.RemoteEndPoint).Address.ToString()); 
+4

Einfach nur neugierig: Hat Ihr ToString-Parse-ToString Chaos jeden Zweck haben? – dtb

+0

Neuling Knospe. Wenn es einen saubereren Weg gibt, würde ich es gerne wissen. – arbme

Antwort

14

Nun, nicht jede IP-Adresse hat einen Namen. In Anbetracht der IPAddress können Sie Dns.GetHostEntry zu versuchen, um es zu lösen. Beachten Sie auch, dass wenn Sie einen NAT-Router verwenden, Sie die IP-Adresse des Routers erhalten und nicht den tatsächlichen Computer.

Und genau den Punkt in den Kommentaren zu adressieren, ich stimme, dass es in ToString/Parse/ToString keinen Sinn:

IPAddress address = ((IPEndPoint)_client.Client.RemoteEndPoint).Address; 
Globals.connectedIPAddress = address.ToString(); 
+0

@ Wenn es sich um einen NAT-Router handelt, erhalten Sie die IP-Adresse des Routers und nicht den tatsächlichen Computer. - Ist es möglich, den tatsächlichen Computernamen (Domainname) zu erhalten? –

+0

@VijayBalkawade: Ich hoffe nicht, persönlich ... –

+0

@JonSkeet gibt es keinen besseren Weg als das (2,5 Jahre später)? In meinem Netzwerk löst diese Methode jedes Mal eine Ausnahme aus. –

Verwandte Themen