.Net Verificare la connessione internet e rilevare il mac Address

Articolo che fornisce al lettore aspetti di gestione della connettività di rete.

il
Sviluppatore Microsoft .Net, Collaboratore di IProgrammatori

In questo vedremo come da una windows application, possiamo verificare la connessione internet del nostro pc, e rilevare il macAddress del nostro pc.
Il MacAddress è un codice univoco per ogni pc esistente e ci permette di distinguerlo tra i pc di tutto il mondo.
Con tale codice per esempio può tornare utile nel caso che si vuole rintracciarlo in caso di furti e quindi accertarsi che il computer rubato è proprio quello personale.
Per rilevare il proprio identificativo, andate nel prompt dei comandi e digitate il seguente comando “Ipconfing /al” , verranno visualizzati una serie di dati relativi alla rete, il tutto come mostrato in figura 1.

Figura 1 – il risultato del comando


Per sapere il MacAddress, bisogna annottarsi il valore presente nella voce “Indirizzo Fisico” quello è il codice univoco.

Stesura del codice


Terminata la parte introduttiva scriviamo il codice per verificare se la connessione internet è presente e per rilevare il macAddress.
Dopo aver creato un progetto di tipo Windows Application, tramite il linguaggio di proprio interesse, nella visualizzazione form, inserite due controlli di tipo pulsante, una per visualizzare un messaggio che indica se siamo connessi e l’altro per rilevare il codice univoco.
Dopo aver impostato la nostra form, passiamo in visualizzazione codice.
In modalità codice, dobbiamo inserire lo spazio dei nomi per utilizzare determinate classi, in alto, sopra ad ogni dichiarazione, inseriamo lo spazio dei nomi per utilizzare le classi riguardante il networking.
Qui di seguito si riporta il frammento di codice per entrambi i linguaggi.

VB.Net
Imports System.Net.NetworkInformation
C#
using System.Net.NetworkInformation;

Lo spazio di nomi precedentemente inserito ci permette di gestire alcuni aspetti della connessione.
Nella classe form, scriviamo una funzione che rileva se siamo connessi o no ad internet, restituendo vero se è connesso o falso. Verrà utilizzata la classe Ping, con il quale si rileva se è raggiungibile il sito “ www.iprogrammatori.it “ e la classe “PingOptions” e “PingReply”.
Qui di seguito le dichiarazione delle suddette operazioni per entrambi i linguaggi di programmazione.

VB.Net
Public Function VerificaConnessioneInternet() As Boolean
Try
Dim PingSito As Ping = New Ping()
Dim host As String = "www.iprogrammatori.it"
Dim buffer As Byte() = New Byte(31) {}
Dim timeout As Integer = 1000
Dim pingOpzioni As PingOptions = New PingOptions()
Dim reply As PingReply = PingSito.Send(host, timeout, buffer, pingOpzioni)
If reply IsNot Nothing AndAlso reply.Status = IPStatus.Success Then
Return True
End If
Return False
Catch
Return False
End Try
End Function
C#
public   bool VerificaConnessioneInternet()
{
try
{
Ping PingSito = new Ping();
String host = "www.iprogrammatori.it";
byte[] buffer = new byte[32];
int timeout = 1000;
PingOptions pingOpzioni = new PingOptions();
PingReply reply = PingSito.Send(host, timeout, buffer, pingOpzioni);
if (reply != null && reply.Status == IPStatus.Success)
{
return true;
}
return false;
}
catch
{
return false;
}
}

Torniamo in visualizzazione grafica della nostra form, per il pulsante riguardante la verifica della connessione internet e facciamo doppio click, in modo che passiamo in visualizzazione codice nell’evento click.

VB.Net
Private Sub BtnPing_Click(sender As Object, e As EventArgs) Handles BtnPing.Click
If VerificaConnessioneInternet() = True Then
MessageBox.Show("Connesso")
Else
MessageBox.Show("Non Connesso")
End If
End Sub
C#
private void BtnPing_Click(object sender, EventArgs e)
{
if (VerificaConnessioneInternet() == true)
MessageBox.Show("Connesso");
else
MessageBox.Show("Non Connesso");
}

Ora non ci resta che testare il codice precedente scritto, il tutto  avviando il nostro programma.
Terminata questa parte scriviamo il codice per la gestione del rilevamento del macaddress.
Passiamo in visualizzazione codice, e nella classe form, scriviamo una funzione per la gestione della scheda, in particolare una funzione che restituisce un oggetto di tipo “PhysicalAddress” .
Qui di seguito si riporta il frammento di codice di tale funzione.

VB.Net
Public Function GetMacAddress() As PhysicalAddress
Try
Dim IndirizzoMacAddress As PhysicalAddress = Nothing
For Each Scheda As NetworkInterface In NetworkInterface.GetAllNetworkInterfaces()
If Scheda.NetworkInterfaceType = NetworkInterfaceType.Ethernet AndAlso Scheda.OperationalStatus = OperationalStatus.Up Then
Return Scheda.GetPhysicalAddress()
End If
If Scheda.NetworkInterfaceType = NetworkInterfaceType.Wireless80211 AndAlso Scheda.OperationalStatus = OperationalStatus.Up Then
IndirizzoMacAddress = Scheda.GetPhysicalAddress()
End If
Next
Return IndirizzoMacAddress
Catch networkInformationException As NetworkInformationException
MessageBox.Show(networkInformationException.Message)
End Try
Return Nothing
End Function
C#
public PhysicalAddress GetMacAddress()
{
try
{
PhysicalAddress IndirizzoMacAddress = null;
foreach (NetworkInterface Scheda in NetworkInterface.GetAllNetworkInterfaces())
{
if (Scheda.NetworkInterfaceType == NetworkInterfaceType.Ethernet && Scheda.OperationalStatus == OperationalStatus.Up)
{
return Scheda.GetPhysicalAddress();
}
if (Scheda.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 && Scheda.OperationalStatus == OperationalStatus.Up)
{
IndirizzoMacAddress = Scheda.GetPhysicalAddress();
}
}
return IndirizzoMacAddress;
}
catch (NetworkInformationException networkInformationException)
{
MessageBox.Show(networkInformationException.Message);
}
return null;
}

Ora passiamo in visualizzazione codice, in modo da fare click sul pulsante che permette di visualizzare a video il codice MacAddress, in modo che si passa in visualizzazione codice nell’evento click di tale pulsante.
Il codice qui di seguito non fa altro che visualizzare a video il dato rilevato.

VB.Net
Private Sub BtnMacAddress_Click(sender As Object, e As EventArgs) Handles BtnMacAddress.Click
Dim risultato As PhysicalAddress = GetMacAddress()
MessageBox.Show(risultato.ToString())
End Sub
C#
private void BtnMacAddress_Click(object sender, EventArgs e)
{
PhysicalAddress risultato = GetMacAddress();
MessageBox.Show(risultato.ToString());
}

Conclusioni

In questo articolo abbiamo visto come poter gestire informazioni utili sulla gestione della connettività. Il rilevamento della connessione internet, può tornare utile nel caso che dobbiamo effettuare operazioni costanti, e quindi tramite applicazione o batch saper gestire le interruzioni di connettività. Mentre la gestione del macaddress, può tornare utile in vari ambiti, per esembio nel campo della sicurezza con il quale può tornare utile nel caso di rintracciare e certificare la proprietà del pc, oppure in ambito di licenze software o altro.