Avatar billede noxiaz Nybegynder
16. maj 2006 - 21:28 Der er 5 kommentarer og
1 løsning

Hurtig ping

/*
* Created by SharpDevelop.
* User: Jesper
* Date: 16-05-2006
* Time: 21:21
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.NetworkInformation;
using System.Text;

namespace Testing
{
    class MainClass
    {
        public static void Main(string[] args)
        {
            int a = 192;
            int b = 168;
            int c = 0;
            int d = 1;
            while (d <= 255) {
                string IP = a.ToString()+"."+b.ToString()+"."+c.ToString()+"."+d.ToString();
                int Timeout = 1;
                    Ping pingSender = new Ping();
                    PingOptions options = new PingOptions();
                    options.DontFragment = true;
                    // Create a buffer of 32 bytes of data to be transmitted.
                    string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
                    byte[] buffer = Encoding.ASCII.GetBytes(data);
   
                    PingReply reply = pingSender.Send(IPAddress.Parse(IP), Timeout, buffer, options);
                    if (reply.Status == IPStatus.Success) {
                        IPHostEntry Host = Dns.GetHostEntry(IP);
                        Console.WriteLine("Ping: "+reply.RoundtripTime.ToString()+" "+Host.HostName);
                    }
                    else if (reply.Status == IPStatus.TimedOut) {
                        //Console.WriteLine( "Timeout: "+IP);
                    }
                    else {
                        //Console.WriteLine("Error: "+IP);
                    }
                d++;
            }
            Console.WriteLine("Done");
            Console.ReadLine();
        }
    }
}

Jeg har dette script som pinger alle ip'er som starter med 192.168.0.xxx
Men sciptet er utroligt langsomt, kan det gøres hurtige på nogen måde så man kan mærke det går hurtigere? Den skal stadig return "ms - hostname" hvis den finder den.
Avatar billede noxiaz Nybegynder
16. maj 2006 - 21:32 #1
btw. Glemte at sige, den stadig skal komme med en error hvis ip'en ikke findes. :)
Avatar billede alex_sleiborg Nybegynder
16. maj 2006 - 21:39 #2
Det tager vel noget tid for den at pinge hver enkelt maskine.
Avatar billede arne_v Ekspert
16. maj 2006 - 21:43 #3
255 threads maaske

eller maaske 32 threads som tager 8 hver
Avatar billede noxiaz Nybegynder
16. maj 2006 - 21:57 #4
IPAddress ip = IPAddress.Parse(Ipen);
IPHostEntry hostname = Dns.GetHostEntry(ip);
if (hostname.HostName != Ipen) {
Console.WriteLine("Hosten hedder: " + hostname.HostName + " IP: " + Ipen);
}

Gjorde det istedet. Det var hurtigere at få hostname istedet for at pinge, og da IP og HOSTNAME umuligt kan være ens, og hostname.HostName returner IP'en hvis den ikke kan findes hostname, så var det meget simpelt, og går utroligt meget hurtigere
Avatar billede arne_v Ekspert
16. maj 2006 - 22:01 #5
for en god ordens skyld - din foerste kode tester paa hvilke systemer
som er oppe (svarer paa ping), mens den anden metode tester paa hvilke
systemer der er defineret i DNS
Avatar billede Syska Mester
17. maj 2006 - 00:20 #6
som Arne siger... hvis du kører en WINS eller andet nytids DNS cache agtigt noget, kan det give problemer, køre din Ping Async, der kan den nemt nå de 255 1-2 mins...... mener jeg i hvert fald da jeg brugte det..... :-)

// ouT
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester