So Scannen Sie einen Bereich von IP-C#

Wie Sie Scannen einen bestimmten Bereich von IP-und auch die Schrittweite an Benutzer definierten Bereich.. wie die meisten port-Scanner. aber wie kann man erhöhen host-bits.. es erhöht die Netzwerk-bits..

private static void sendAsyncPingPacket(string hostToPing)
    {
        try
        {
            int timeout = 5000;
            AutoResetEvent waiter = new AutoResetEvent(false);
            Ping pingPacket = new Ping();
            //ping completion event reaised
            pingPacket.PingCompleted += new PingCompletedEventHandler(PingCompletedCallback);
            string data = "Ping test check";
            byte[] byteBuffer = Encoding.ASCII.GetBytes(data);
            PingOptions pingOptions = new PingOptions(64, true);
            Console.WriteLine("Time to live: {0}", pingOptions.Ttl);
            //Console.WriteLine("Don't fragment: {0}", pingOptions.DontFragment);
            pingPacket.SendAsync(hostToPing, timeout, byteBuffer, pingOptions, waiter);


            //do something useful
            waiter.WaitOne();
            Console.WriteLine("Ping RoundTrip returned, Do something useful here...");
        }
        catch (PingException pe)
        {
            Console.WriteLine("INVALID IP ADDRESS FOUND");
        }
        catch (Exception ex)
        {
            Console.WriteLine("Exceptin " + ex.Message);
        }

    }
    private static void PingCompletedCallback(object sender, PingCompletedEventArgs e)
    {
        try
        {
            if (e.Cancelled)
            {
                Console.WriteLine("Ping canceled.");

                //Let the main thread resume. 
                //UserToken is the AutoResetEvent object that the main thread 
                //is waiting for.
                ((AutoResetEvent)e.UserState).Set();
            }

            //If an error occurred, display the exception to the user.
            if (e.Error != null)
            {
                Console.WriteLine("Ping failed>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ");
                //this will print exception
                //Console.WriteLine (e.Error.ToString ());

                //Let the main thread resume. 
                ((AutoResetEvent)e.UserState).Set();
            }

            PingReply reply = e.Reply;

            DisplayReply(reply);

            //Let the main thread resume.
            ((AutoResetEvent)e.UserState).Set();
        }
        catch (PingException pe)
        {
            Console.WriteLine("INVALID IP ADDRESS");
        }
        catch (Exception ex)
        {
            Console.WriteLine("Exception " + ex.Message);
        }
    }

    public static void DisplayReply (PingReply reply)
    {
        if (reply == null)
            return;

        Console.WriteLine ("ping status: {0}", reply.Status);
        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);
        }
    }

  private static long ToInt(string addr) 
    {

        return (long)(uint)System.Net.IPAddress.NetworkToHostOrder(
            (int)System.Net.IPAddress.Parse(addr).Address);    
    }

   private static string ToAddr(long address)
    {
        return System.Net.IPAddress.Parse(address.ToString()).ToString();
    }

static int temp = 0;
    private static void scanLiveHosts(string ipFrom, string ipTo)
    {
        long from =  Program.ToInt(ipFrom);
        long to =  Program.ToInt(ipTo);

        long ipLong = Program.ToInt(ipFrom);
        while ( from < to)
        {

            string address = Program.ToAddr(ipLong);
            Program.sendAsyncPingPacket(address);
            ipLong++;
        }

    }
        static void Main(string[] args)
    {
        try
        {
            Program.getDeviceList();
            Program.sendAsyncPingPacket("192.168.3.72");
            Program.scanLiveHosts("192.168.3.1", "192.168.3.41");



        }
        catch (InvalidOperationException ioe)
        {
            Console.WriteLine(ioe.Message);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
  • Kann man den code hast du bisher?
  • Wo ist die definition von getDeviceList () - Methode??
  • Ich erinnere mich nicht, jetzt, immer nur der device-Liste von adapter.
InformationsquelleAutor AZ_ | 2009-10-19
Schreibe einen Kommentar