utorok, 29 november 2011 12:00 Written by 1539 times
Rate this item
(2 votes)

C# - IP checker

Aplikácia na overovanie dostupnosti IP adries - "pingovanie".

 

Vstupné parametre:

IP adresa/adresy - oddeľovacie znaky ";" pre jednotlivé adresy a "-" pre rozsah adries.

Timeout - nastavenie času odozvy, ako dlho sa má čakať na odpoveď.

Loop delay - oneskorenie medzi jednotlivými "pingami".

Repeat - opakovanie, nastavenie počtu "pingov" za sebou. Ak tento parameter nie je vyplnený, znamená to nekonečnú slučku, ktorá sa dá prerušiť tlačidlom "CANCEL".

Výstup: ak je parameter REPEAT = 1, výsledok je vypísaný v klasickom windows okne. Ak je nastavené opakovanie, údaje sa ukladajú do TXT súboru.

        /**************************************************************************
        * IP ping.
        * 
        * Inputs:      ipList   - array list of IP addresses
        * Outputs:     outputIP - output string with OK and NG IP addresses
        **************************************************************************/
        private bool PingIP(ArrayList ipList, out string outputIP)
        {
            long pingTimeMS = -1;
            outputIP = String.Empty;
            errorMessage = String.Empty;
            try
            {
                Ping ipAddressPing = new Ping();    //vytvorenie objektu

                foreach (string ipAddress in ipList)    //pre vsetky zadane IP adresy
                {
                    Application.DoEvents();    //povolenie ostatnych aplikacii
                    if (cancel == true) break;  //kontrola, ci operacia nebola zrusena uzivatelom - tlacidlo CANCEL

                    PingReply pingReply = ipAddressPing.Send(ipAddress, Convert.ToInt32(this.textBoxTimeOut.Text)); //pingovanie - ip adresa, timeout

                    if (pingReply.Status != IPStatus.Success)   //kontrola statusu pre danu ip adresu
                    {
                        errorMessage += "\r\n" + ipAddress;
                    }
                    else
                    {
                        pingTimeMS = pingReply.RoundtripTime;   //cas odozvy
                        outputIP += ipAddress + " - Time(ms): " + pingTimeMS.ToString() + "\r\n";
                    }
                    Thread.Sleep(Convert.ToInt32(this.textBoxDelay.Text)); //oneskorenie medzi jednotlivymi pingami
                }
                if (errorMessage != String.Empty) //kontrola, ci pingovanie pri niektorej IP adrese zlyhalo 
                {
                    return false;
                }

            }
            catch (Exception e)
            {
                exceptionError = true;  //priznak ak nastala nejaka vynimka
                errorMessage = e.Message;
                return false;
            }
            return true;
        }
Last modified on pondelok, 19 december 2016 21:29
Ing.Peter Šuba

Zakladateľ www.projectik.eu

It's time for another revolution

(Why so serious?)

Website: www.projectik.eu