sabato 28 settembre 2019

Net Verificare la connessione internet e rilevare il mac Address

Si riporta l'articolo scritto per il sito https://www.iprogrammatori.it/articoli/programmazione/art_net-verificare-la-connessione-internet-e_1641.aspx

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.

Nessun commento: