Home Page Home Page Tips & Tricks Verificare lo stato della connessione Internet con .NET

Verificare lo stato della connessione Internet con .NET


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#
Codice .NET n°1
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.NET
Codice .NET n°2
Imports 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
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5