Creare un network scanner in C#
In sostanza quello che vogliamo fare è scandagliare tutta la rete locale ed identificare quali IP sono attivi.
Per farlo dobbiamo fare un PING su tutti gli indirizzi.
In C# abbiamo la possibilità di usare la classe Ping.
In questo articolo vediamo come fare; non dobbiamo installare nessuna dipendenza:
using System.Net.NetworkInformation;
using System.Text;
namespace Test
{
class Program
{
static void Main(string[] args)
{
for (int i = 0; i < 255; i++)
{
SendPing("192.168.1." + i);
}
}
static void SendPing(string host)
{
Ping pingSender = new Ping();
string data = "unpòdidati";
byte[] buffer = Encoding.ASCII.GetBytes(data);
int timeout = 2000;
PingOptions options = new PingOptions(64, true);
PingReply reply = pingSender.Send(host, timeout, buffer, options);
if (reply.Status == IPStatus.Success)
{
Console.WriteLine("Address: {0}", reply.Address.ToString());
Console.WriteLine("RoundTrip time: {0}", reply.RoundtripTime);
Console.WriteLine("Time to live: {0}", reply.Options.Ttl);
Console.WriteLine("Don't fragment: {0}", reply.Options.DontFragment);
Console.WriteLine("Buffer size: {0}", reply.Buffer.Length);
}
else
{
Console.WriteLine(host + ": " + reply.Status);
}
Console.WriteLine("-----");
}
}
}
Ovviamente accertatevi della vostra classe di IP, che potrebbe essere diversa dalla mia.
Provate anche diversi valori di timeoout per vedere le differenti risposte.
Enjooy!
c# ping
Commentami!