Recuperare indirizzo IP con Asp.NET e C#

Ho trovato ben due modi per recuperare l’indirizzo IP dei visitatori attraverso Asp.NET e C#.
Uno è molto semplice e ricorda quello usato in PHP (anzi sono praticamente uguali).
L’altro è un pò più sofisticato.
Prima di tutto create una pagina aspx e aggiungete una Label per stampare l’indirizzo.
Poi mettiamo mano al code-behind della pagina.
Questo è il metodo semplice:

protected void Page_Load(object sender, EventArgs e)
{
IPAdress.Text = Request.ServerVariables["REMOTE_ADDR"];
}


Nel Page_load andiamo ad aggiungere una semplice linea che imposta il testo della label con l’ip.
IPAdress è la label e usaimo il metodo Text per impostare il testo.
Dall’altra parte dell’uguale usiamo Request.ServerVariables.
Request serve ad inviare richieset al server, e ServerVariables serve per recuperare informazioni dal server.
Tra le varibiali usabili usiamo REMOTE_ADDR, che ritorna appunto l’indirizzo ip del richiedente.

Veniamo adesso al secondo metodo.
Prima di tutto importiamo il namespace System.Net.
Ecco il codice:

protected void Page_Load(object sender, EventArgs e)
 {
 IPAdress.Text = getMyIp();
 }

 private string getMyIp()
 {
 IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());
 foreach (IPAddress ip in host.AddressList)
 {
 if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
 {
 return ip.ToString();
 }
 }
 return null;
 }

Nel Page_Load non facciamo altro che richiamare il metodo getMyIp per impostare il testo della label.
Inizializiamo una nuova istanza della classe IPHostEntry che possiamo considerare un container per le informazioni sugli indirizzi host.
Usiamo poi un oggetto di classe Dns che serve per risolvere i nomi di dominio con il metodo GetHostEntry al quale passiamo un altro oggetto Dns con il metodo GetHostName.
Il metodo GetHostEntry è in grado di risolvere un indirizzo IP o un host name dalle informazioni passate da IPHostEntry.
GetHostName invece recupera il nome del computer locale.
Nel ciclo foreach IPAddress fornisce l’indirizzo IP e AddressList (un metodo della classe IPHostEntry) “getta” o “setta” gli IP associati con l’oggetto di classe IPHostEntry istanziato prima.
Nella condizione dell’istruzione if usiamo i metodi della classe IPAddress.
IPAdressFamily recupera la famiglia di IP del quale fa parte l’indirizzo del richiedente.
Con System.Net.Sockets.AddressFamily.InterNetwork creiamo una socket con il membro InterNetwork che spcifica che ci si apsetta un indirizzo IPV4.
Se la condizione è verificata il metodo ritorna l’ip con il metodo ToString.

Lascia un commento