Un problema molto comune è quello di verificare se c'è connessione ad Internet sul computer su cui stiamo eseguendo il nostro programma Windows. Ci sono diversi modi e metodi per farlo. Uno per esempio potrebbe essere quello di istanziare la classe
WebRequest, richiamare una qualsiasi pagina Web e verificare cosa succede. Se riceviamo correttamente la pagina è segno che la connessione è attiva, diversamente nel caso di un'eccezione capiremmo che non c'è aperta la connessione o alla peggio ci sono problemi di rete (come mancate risoluzioni di DNS o similiari).
Un altro metodo molto interessante è quello di utilizzare una
API di sistema che restituisce lo stato della connessione Internet. La
API di cui stiamo parlando è
InternetGetConnectedState contenuta nella libreria
wininet.dll. Per utilizzarla con
.NET sarà necessario come al solito referenziare il namespace
System.Runtime.InteropServices e definire il prototipo della funzione. Ecco alcuni esempi in
C# e in
VB.NET:
C#using System.Runtime.InteropServices ;
public class ConnectionState
{
[DllImport("wininet.dll")]
private extern static bool InternetGetConnectedState(out int Description, int ReservedValue) ;
public ConnectionState()
{
//
// TODO: aggiungere qui la logica del costruttore
//
}
public static bool ConnessioneInternet( )//rileva se la macchina è on-line
{
int Desc ;
return InternetGetConnectedState( out Desc, 0 ) ;
}
}
VB.NETImports System.Runtime.InteropServices
Public Class ConnectionState
<DllImport("wininet.dll")> _
Private Shared Function InternetGetConnectedState(ByRef Description As Integer, ByVal ReservedValue As Integer) As Boolean
End Function
Public Sub New()
End Sub
Public Shared Function ConnessioneInternet() As Boolean
Dim Desc As Integer
Return InternetGetConnectedState(Desc, 0)
End Function
End Class