2012-03-21 20 views
5

Estoy trabajando en una aplicación que redirige al usuario al servidor más cercano automáticamente (hay varios servidores). Para eso necesito detectar la dirección IP del cliente y la dirección IP del servidor que el cliente está visitando. Creo que para obtener la dirección IP del cliente que puede utilizar:Detección de la dirección IP del cliente y del servidor

HttpContext.Current.Request.UserHostAddress 

¿Cómo puedo obtener la dirección IP del servidor que el cliente está de visita? ¿Es posible detectarlo sin utilizar consultas DNS?

+0

este tipo de redirección es mejor es que está hecho a nivel router como una vez que el cliente se conecta a ser redirigido que también podría servir a la página de todos modos. – Lloyd

Respuesta

1

parece que está aquí:

Getting the IP address of server in ASP.NET?

//this gets the ip address of the server pc 

public string GetIPAddress() 
{ 
string strHostName = System.Net.Dns.GetHostName(); 
IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName()); 
IPAddress ipAddress = ipHostInfo.AddressList[0]; 

return ipAddress.ToString(); 
} 

Felicitaciones a TStamper!

+1

Esa respuesta solo debería ser un comentario como duplicado. – Silvermind

+0

Me da este error 'No se pudo encontrar el tipo o el nombre del espacio de nombres 'IPHostEntry' (¿falta una directiva using o una referencia de ensamblado?)'. ¿Me estoy perdiendo algo? – skos

+0

Mejor utilice la otra respuesta en su artículo vinculado, el uno [sin consultar DNS] (http://stackoverflow.com/a/2239564/107625). –

0

método mejor, más limpio y más corto:

using System.Net; 

public IPAddress[] GetIPAddress() 
{ 
    return Dns.GetHostAddresses(Dns.GetHostName()); 
} 

TIP: Este método devuelve una matriz de direcciones, algunos de ellos son tarjetas de red privada y al menos una es pública (frente a la Internet). Este es un método útil que le dice si una dirección IP determinada es privada. Iterar la matriz IPAddress[] y consulta en este método:

public bool IsPrivateNetworkIPAddress(string ip) 
{ 
    Regex rx = new Regex(@"(^127\.0\.0\.1)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^192\.168\.)"); // see http://stackoverflow.com/a/2814102/290343 
    return rx.IsMatch(ip); 
} 
Cuestiones relacionadas