Question

Comment numériser une gamme spécifique de la propriété intellectuelle et incrémenter également à la gamme définie par l'utilisateur .. dans comme la plupart des scanners de ports. mais comment augmenter bits d'hôte .. il augmente les bits de réseau ..

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);
        }
    }
Était-ce utile?

La solution

Méthodes principales utilisées sont

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();
}

ci-dessus après est en profondeur comment envoyer paquet de ping et de numérisation réseau.

Autres conseils

Hey j'ai trouvé le code par google, j'ai apporter de petits changements pour adapter mon code et d'autres modifications pour adapter votre code ... peut-être vous devriez penser à changer:

while ( from < to)
{

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

à quelque chose comme:

while ( ipLong < to)
{

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

ou la "quête" pour ips ne se limitera pas toaddr (à)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top