2010-07-15 19 views
10

Sono riuscito a ottenere l'IP dei client connessi con il codice riportato di seguito ma non riesco a ottenere il nome host.Ottieni nome host dall'indirizzo IP

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

Solo curioso: Il vostro ToString-Parse-ToString pasticcio hanno uno scopo? – dtb

+0

Germoglio novizio. Se c'è un modo più pulito, mi piacerebbe sapere per favore. – arbme

risposta

14

Beh, non ogni indirizzo IP ha un nome. Tuttavia, dato il IPAddress è possibile utilizzare Dns.GetHostEntry a provare per risolverlo. Si noti inoltre che se si tratta di un router NAT, si otterrà l'indirizzo IP del router anziché il proprio computer.

E proprio per affrontare il punto nei commenti, sono d'accordo che non c'è nessun punto in ToString/Parse/ToString:

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

@ se si tratta di un router NAT, si otterrà l'indirizzo IP del router anziché la propria macchina effettiva. - È possibile ottenere il nome della macchina reale (nome di dominio)? –

+0

@VijayBalkawade: Spero di no, personalmente ... –

+0

@JonSkeet non c'è modo migliore di questo (2,5 anni dopo)? Sulla mia rete questo metodo genera un'eccezione Ogni volta. –