Ping program

Dzisiaj pokażę wam jak zrobić program który będzie pingował wybrane adresy IP lub ich przedział. Pingowanie to prosty sposób diagnozowania połączeń sieciowych. Pozwala na sprawdzenie czy istnieje połączenie pomiędzy hostami testującym i testowanym. Polega na wysyłaniu pakietów i ich odbiorze. W kilku słowach, program sprawdzi które adresy IP są w danym momencie zajęte a które są wolne. To do roboty. Zaczynamy standardowo od utworzenia nowego projektu. I od rozłożenia elementów tak jak to jest przedstawione na obrazku:

ping1Dla ListBoxów ustawiłem Odpowiedni BackColor. Zielony dla numerów aktywnych, czerwony dla nieaktywnych. Najpierw musimy ograniczyć naszego użytkownika. Adres IP składa się z czterech rzędów cyfr od 0 – 255 tak więc nasz użytkownik nie może w TextBoxy wpisać liter ani cyfr większych niż 255, nie może też zostawić pustych pól i może używać tylko liczb całkowitych. Spowodowało by to wystąpieniem błędu, w najgorszym razie zapętlenie które mogłoby zawiesić komputer.

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        If Not (IsNumeric(TextBox1.Text) And IsNumeric(TextBox2.Text) And IsNumeric(TextBox3.Text) _
                And IsNumeric(TextBox4.Text) And IsNumeric(TextBox5.Text)) Then

            MsgBox("Aby program działał dobrze wszystkie pola muszą zawierać cyfry z przedziału od 0-255. Nie spełniłeś wymagań.")
        Else
            If TextBox1.Text <= 255 And TextBox1.Text >= 0 And TextBox2.Text <= 255 And TextBox2.Text >= 0 And _
                TextBox3.Text <= 255 And TextBox3.Text >= 0 And TextBox4.Text <= 255 And TextBox4.Text >= 0 And _
                TextBox5.Text <= 255 And TextBox5.Text >= 0 Then
                Dim output As Integer
                If Integer.TryParse(TextBox1.Text, output) And Integer.TryParse(TextBox2.Text, output) And _
 Integer.TryParse(TextBox3.Text, output) And Integer.TryParse(TextBox4.Text, output) And _
 Integer.TryParse(TextBox5.Text, output) Then
                    MsgBox("udało sie")
                Else
                    MsgBox("Proszę podać tylko liczby całkowite.")

                End If

            Else
                MsgBox("któreś z pól zawiera wartość większą niż 255.")
            End If
        End If
    End Sub

Dobra co tutaj się dzieje. Najpierw sprawdzamy czy w naszych TextBoxach znajdują się cyfry. Funkcja „isNumeric” sprawdza czy tekst jest numerem jeśli tak przechodzi dalej, jeśli nie wyskakuje komunikat, dalej sprawdzamy czy cyfry są z dobrego przedziału czyli nie może być mniejszy niż 0 ale nie może być większy od 255. Na końcu sprawdza czy numer jest Integer czyli czy pasuje do wzorca liczb całkowitych. Można odpalić teraz program i sprawdzić czy wszystko działa. U mnie działało super. Teraz zadeklarujemy sobie dwie zmienne „start” i „stop” Będą one naszym początkiem i końcem adresów ip a także minimum i maximum naszego prograssBara. Dodamy jeszcze linijkę ustawiającą nasz ProgressBar na minimum aby za każdym razem gdy przyciśniemy „diagnoza” a nasz program wcześniej popełnił jakiś błąd (bo i tak może się zdarzyć) progressBar będzie zawsze zerowany, Użyjemy też opcji Clear na ListBoxach aby każde wyszukiwanie było nowe.

Public Class Form1
    Dim start As String
    Dim koniec As String

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        start = TextBox4.Text
        koniec = TextBox5.Text

        ProgressBar1.Minimum = start
        ProgressBar1.Maximum = koniec + 1
        ProgressBar1.Value = ProgressBar1.Minimum

        ListBox1.Items.Clear()
        ListBox2.Items.Clear()
        .....
        .....

Możemy sprawdzić czy nie ma błędów, raczej nasz program nic jeszcze nie zrobi ale sprawdzić warto. Dodamy sobie teraz jeszcze trzy zmienne. „numer” , „aktywne” , „nieaktywne”. Numer będzie przechowywał nasz numer ip połączony w całość, reszta zmiennych będzie informowała użytkownika o tym ile program znalazł aktywnych numerów a ile nieaktywnych.

Public Class Form1
    Dim start As String
    Dim koniec As String
    Dim numer As String
    Dim aktywne As Integer
    Dim nieaktywne As Integer
    .....

Przechodzimy teraz do miejsca gdzie nasza pętla uruchamiała komunikat „MsgBox(„udało sie”)” kasujemy to i wprowadzamy pętle „do while”. Wygląda to tak:

If Integer.TryParse(TextBox1.Text, output) And Integer.TryParse(TextBox2.Text, output) And _
 Integer.TryParse(TextBox3.Text, output) And Integer.TryParse(TextBox4.Text, output) And _
 Integer.TryParse(TextBox5.Text, output) Then

                    Do

                    Loop Until start = koniec + 1

                Else
....
....

Pętla Do będzie sprawdzała nam nasze adresy ip. Trzeba pamiętać, że taki typ pętli jaki ja użyłem leci od góry do dołu, czyli warunek jest sprawdzany na końcu dla tego trzeba do koniec dodać 1. teraz łączymy nasz numer w całość. Dodamy sobie na chwile linijke „ListBox1.Items.Add(numer)” aby sprawdzić czy wszystko działa. Wygląda to tak:

    ....
                If Integer.TryParse(TextBox1.Text, output) And Integer.TryParse(TextBox2.Text, output) And _
                    Integer.TryParse(TextBox3.Text, output) And Integer.TryParse(TextBox4.Text, output) And _
                    Integer.TryParse(TextBox5.Text, output) Then


                    Do
                        numer = "" + TextBox1.Text + "." + TextBox3.Text + "." + TextBox4.Text + _
                        "." + start.ToString


                        ListBox1.Items.Add(numer)

                        start += 1
                        ProgressBar1.Value += 1

                    Loop Until start = koniec + 1
            ......

Powinno wam ładnie listować, mi listuje. Teraz kończymy nasz program dodając funkcje „My.Computer.Network.Ping(numer)” w taki sposób:

Do
                numer = "" + TextBox1.Text + "." + TextBox3.Text + "." + TextBox4.Text + "." + start.ToString
                If My.Computer.Network.Ping(numer) Then
                    ListBox1.Items.Add(numer)
                    aktywne += 1
                Else
                    ListBox2.Items.Add(numer)
                    nieaktywne += 1
                End If

                If ProgressBar1.Value = koniec Then
                    MsgBox("Operacja ukończona pomyślnie. Znaleziono " + aktywne.ToString + " aktywnych numerów IP i "_
                           + nieaktywne.ToString + " numerów nieaktywnych")
                End If

                start += 1
                ProgressBar1.Value += 1

        Loop Until start = koniec + 1

Na samym końcu tuż powyżej „sub” dodajemy linijkę:

.....
            ProgressBar1.Value = ProgressBar1.Minimum

    End Sub

Cały kod można pobrać: ping_program

cały projekt: Program_pingujacy.rar

jak to działa zobaczycie tutaj:

Permalink do tego artykułu: https://visualmonsters.cba.pl/ping-program/

Dodaj komentarz

Twój adres email nie będzie publikowany.