2010-07-15 28 views
10

He logrado obtener la IP de los clientes conectados con el siguiente código, pero parece que no puede obtener el nombre de host.Obtener el nombre de host de la dirección IP

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

Sólo por curiosidad: ¿Su ToString-Analizar-ToString desastre tienen ningún propósito? – dtb

+0

Newbie bud. Si hay una manera más limpia, me gustaría saber por favor. – arbme

Respuesta

14

Bueno, no todas las direcciones IP tiene un nombre. Sin embargo, dado el IPAddress puede usar Dns.GetHostEntry a intente para resolverlo. También tenga en cuenta que si se trata de un enrutador NAT, obtendrá la dirección IP del enrutador en lugar de su máquina real.

Y sólo para abordar el punto en los comentarios, estoy de acuerdo en que no hay ningún punto en ToString/Analizar/ToString:

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

@ si se trata de un enrutador NAT, obtendrá la dirección IP del enrutador en lugar de su máquina real. - ¿Es posible obtener el nombre real de la máquina (nombre de dominio)? –

+0

@VijayBalkawade: Espero que no, personalmente ... –

+0

@JonSkeet ¿hay mejor manera que esto (2.5 años después)? En mi red, este método arroja una excepción Every Time. –

Cuestiones relacionadas