Creare un network scanner in C#

Mattepuffo's logo
Creare un network scanner in C#

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!


Condividi

Commentami!