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:
Dla 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:

