In un
articolo che ho scritto non molto tempo fa, parlavo della storia del programma
ping, dalla nascita nel 1983 alle varie modifiche, che oggi sono implementabili tutti i sistemi operativi. La semplicità e la versatilità di questo indispensabile strumento sono visibili in un
piccolo progetto di
Stefan Prodan, ospitato su
The Code Project.
Il programma, disponibile sia come eseguibile che come sorgente, è scritto in C# 2.0 ed è di una semplicità quasi disarmante, anche se analizzato in dettaglio contiene alcune intuizioni che possono far riflettere, soprattutto chi ha un po’ di dimestichezza con i protocolli di rete. Il programma si basa sulla classe
Ping disponibile nel .NET 2.0, che appartiene al namespace
System.Net.NetworkInformation e che costituisce il cuore delle 170 linee di codice, di cui è composta questa piccola applicazione console.
Tutto inizia con un controllo della connettività eseguito grazie alla DLL di sistema
winnet. Se questo primo passo è andato a buon fine, si creano le istanze della classe
Ping e
PingOptions, a cui vengono passati alcuni parametri - TTL e frammentazione dei pacchetti - e vengono
bufferizzati 32 byte, che verranno inviati successivamente attraverso il metodo
Ping.send().
Gli argomenti possono essere passati sia tramite linea di comando, sia dopo l’esecuzione del programma. A questo punto è sufficiente saper sfruttare i metodi che la classe
Ping mette a disposizione ed interpretare correttamente le risposte.
In realtà l’idea non è proprio di
Stefan Prodan, ma piuttosto un’elaborazione di un
precedente programma scritto da
Wesley Brown, che girava sul .NET 1.1; rimane comunque il fatto che in poche linee di codice abbiamo un’applicazione utilissima e soprattutto ottima per chi volesse studiare il funzionamento dei protocolli di rete in C#.