Archivi giornalieri: 18 settembre 2018

#4 Ottenere l’indirizzo IP [== AGGIORNATO ==]

Questo era un post che avevo pubblicato in questo blog ben 10 anni fa e ora lo riprendo perché è opportuno che venga modificato qualcosa…

In particolare il metodo Dns.GetHostByName() è deprecato e quindi bisogna utilizzare un codice diverso. Quello che vi consiglio io è questo:

Private Function GetIPv4Address() As String
    GetIPv4Address = String.Empty
    Dim strHostName As String = System.Net.Dns.GetHostName()
    Dim iphe As System.Net.IPHostEntry =
  System.Net.Dns.GetHostEntry(strHostName)

    For Each ipheal As System.Net.IPAddress In iphe.AddressList
        If ipheal.AddressFamily =
  System.Net.Sockets.AddressFamily.InterNetwork Then
            GetIPv4Address = ipheal.ToString()
            If GetIPv4Address.Substring(0, 7) = "192.168" Then
                Return GetIPv4Address
            End If
        End If
    Next
End Function

Ho sperimentato vari metodi, ma l’unico che ho trovato che permetta di estrarre un indirizzo IPv4 (in particolare l’indirizzo locale 192.168.xxx.xxx) è quello di questa variante.

Se togliete il test sulla stringa “192.168 è probabile che invece vi venga presentato l’indirizzo IP che il router ADSL ha sulla rete esterna.

[VECCHIO TESTO]:

Per ottenere l’indirizzo IP della macchina (collegata in rete) sulla quale gira il programma, ecco una soluzione valida per Visual Basic 2005:

Private Shared Sub NamedSub() 
  Dim loip() As System.Net.IPAddress = _ 
    System.Net.Dns.GetHostAddresses(System.Net.Dns.GetHostName) 
  Dim ip As String = loip(0).ToString 
  MessageBox.Show(ip) 
End Sub

E’ possibile ottenere altre informazioni sulla connessione di rete leggendo questo articolo pubblicato su MSDN

Il metodo usato in Visual Basic 2003 è obsoleto e da evitare:

Dim ip As String = _ 
System.Net.Dns.GetHostByName(System.Net.Dns.GetHostName) 
.AddressList(0).ToString 

N.B.: l’istruzione deve essere scritta tutta su una singola riga