2010-07-15 4 views
10

J'ai réussi à obtenir l'adresse IP des clients connectés avec le code ci-dessous, mais je n'arrive pas à obtenir le nom d'hôte.Obtenir le nom d'hôte à partir de l'adresse IP

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

curiosité: Votre gâchis ToString-parse-ToString ont quelque chose? – dtb

+0

Bourgeon débutant. S'il y a un moyen plus propre, je voudrais savoir s'il vous plaît. – arbme

Répondre

14

Eh bien, pas toutes les adresses IP a un nom. Cependant, étant donné le IPAddress, vous pouvez utiliser Dns.GetHostEntry pour essayez pour le résoudre. Notez également que s'il s'agit d'un routeur NAT, vous obtiendrez l'adresse IP du routeur plutôt que leur machine réelle.

Et juste pour répondre au point dans les commentaires, je suis d'accord qu'il n'y a pas de point dans ToString/Parse/ToString:

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

@ Si c'est un routeur NAT, vous obtiendrez l'adresse IP du routeur plutôt que leur machine réelle. - Est-il possible d'obtenir le nom réel de la machine (nom de domaine)? –

+0

@VijayBalkawade: J'espère que non, personnellement ... –

+0

@JonSkeet n'y a-t-il pas de meilleur moyen que celui-ci (2,5 ans plus tard)? Sur mon réseau, cette méthode émet une exception Every Time. –

Questions connexes