2012-03-21 10 views
5

Sto lavorando a un'applicazione che reindirizza automaticamente l'utente al server più vicino (ci sono più server). Per questo ho bisogno di rilevare l'indirizzo IP del client e l'indirizzo IP del server che il cliente sta visitando. Credo che per ottenere l'indirizzo IP del client che può utilizzare:Rilevamento dell'indirizzo IP del client e del server

HttpContext.Current.Request.UserHostAddress 

Come posso ottenere l'indirizzo IP del server che il client è in visita? È possibile rilevarlo senza utilizzare l'interrogazione DNS?

+0

questo tipo di reindirizzamento è meglio di essere stato fatto a livello di router come una volta che il client si connette per essere reindirizzati si potrebbe anche servire pagina comunque. – Lloyd

risposta

1

sembra che sia qui:

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(); 
} 

Complimenti a TStamper!

+1

Questa risposta dovrebbe essere solo un commento come duplicato. – Silvermind

+0

Mi dà questo errore 'Non è stato possibile trovare il tipo o il nome dello spazio dei nomi 'IPHostEntry' (ti manca una direttiva using o un riferimento all'assembly?)'. Mi sto perdendo qualcosa? – skos

+0

È meglio utilizzare l'altra risposta nell'articolo collegato, ovvero [senza query DNS] (http://stackoverflow.com/a/2239564/107625). –

0

Meglio, il metodo più pulito e più breve:

using System.Net; 

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

SUGGERIMENTO: Questo metodo restituisce un array di indirizzi, alcuni di loro sono schede di rete privati ​​e almeno uno è pubblico (di fronte al Internet). Questo è un metodo utile che ti dice se un determinato indirizzo IP è privato. Iterare il vostro IPAddress[] array e query su questo metodo:

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); 
} 
Problemi correlati