Ocena użytkowników: / 0
SłabyŚwietny 

W tym artykule chciałbym przedstawić najprościej jak można możliwości klasy Ping C#. Przedstawię jak za pomocą dosłownie kilku linijek kodu można przejrzeć sieć lokalną i sprawdzić adresy IP wszystkich aktywnych komputerów. Po co? Czasem można np. przypadkowo znaleźć ciekawe rzeczy wśród folderów udostępnionych coś komuś podrzucić i mieć ciekawą zabawę :). Zaczynamy. Będziemy potrzebowali się dowiedzieć jaki jest adres naszej sieci. Najczęściej jest to 192.168.0.1 z maską podsieci 255.255.255.0 czyli ten adres IP został podzielony tak że pierwsze trzy człony to adres sieci a ostatni to adres hostów lub 192,268,1,1 z maską podsieci 255.255.255.0 czyli z takim samym podziałem. Aby to sprawdzić w systemie Windows w poleceniu uruchom wpisujemy cmd i klikamy enter. Po uruchomieniu konsoli wpisujemy polecenie ipconfig /all powinny nam się pokazać wszystkie dostępne połączenia sieciowe. Znajdujemy to, które jest aktywne i sprawdzamy adres bramy.  Teraz przejdziemy do napisania programu. Otwieramy nowy projekt Windows Aplication. Raczej nie będę umieszczał tutaj szczegółowych opisów przeprowadzanych czynności, jeżeli pojawią się jakieś problemy proszę o poruszenie tematu na forum, odpowiem najszybciej jak tylko będę mógł.

usługi informatyczne warszawa

 

Tak rozwiązałem widok formy iw pole Host wpisujemy początkowy adres do wyszukiwania w pole ilość należy wpisać ile adresów będzie sprawdzone, pole timeout po jakim czasie nastąpi timeout. Jeżeli chodzi o sieć lokalną to zazwyczaj 20 milli sekund jest czasem wystarczającym w pole TTL możemy wpisać domyślną wartość 128. Przycisk działaj sprawdza tylko wpisany adres a przycisk szukaj sprawdza wszystkie zadane adresy. W lewym polu typu ListBox są wyniki poszukiwań i adresy wszystkich komputerów, które odpowiedziały a w prawym polu są przeszukiwane adresy. Przycisk Czyść służy do wyczyszczenia okien. Teraz część  z kodem.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Net.NetworkInformation;
using System.Text;
using System.Windows.Forms;

namespace ping
{
public partial class Form1 : Form
{
int ilosc;
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
działaj(tpoczatek.Text);
}

private void działaj(string adres)
{
listBox2.Items.Add("spr: " + adres);
Ping pingSender = new Ping();
PingOptions options = new PingOptions();
options.Ttl = (int)numericUpDown1.Value;
options.DontFragment = checkBox1.Checked;
string data = tdata.Text;

byte[] buffer = Encoding.ASCII.GetBytes(data);
int timeout = (int)numericUpDown2.Value;
//int timeout = 10000;
try
{
PingReply reply = pingSender.Send(adres, timeout, buffer, options);
if (reply.Status == IPStatus.Success)
{
string[] linie = new string[5];
linie[0] = "Adres: " + reply.Address.ToString();
// linie[1] = "Czas: " + reply.RoundtripTime.ToString();
//linie[2] = "TTL: " + reply.Options.Ttl.ToString();


listBox1.Items.Add(linie[0]);

}
else
{
listBox1.Items.Add(reply.Status.ToString());

}
}
catch(Exception ex)
{
listBox1.Items.Add(ex.Message);

}



}

private void button2_Click(object sender, EventArgs e)
{
ilosc = Convert.ToInt32 (tkoniec.Text);
progressBar1.Maximum = ilosc;
timer1.Enabled = true;

}

private void button3_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
listBox2.Items.Clear();
}
int tmp = 0;
private void timer1_Tick(object sender, EventArgs e)
{
if (tmp == ilosc)
{
progressBar1.Value = 0;
timer1.Enabled = false;
}
string[] adres = tpoczatek.Text.Split('.');
int koncowka = Convert.ToInt32(adres[adres.Length - 1]);
koncowka = koncowka + tmp;
adres[adres.Length - 1] = Convert.ToString(koncowka);
string zwrot = null;
foreach (string item in adres)
{
zwrot += item + ".";
}
zwrot = zwrot.Substring(0, zwrot.Length - 1);
działaj(zwrot);
tmp++;
progressBar1.Value++;
if (progressBar1.Value == progressBar1.Maximum) progressBar1.Value = 0;
}
}
}

I to już chyba jest wszystko co powinienem na ten temat napisać, po przeanalizowaniu dość prostego jak sądzę kodu łatwo można dojść jak program działa. A co można zrobić z takim znalezionym adresem? Można go np po dwuch znakach \\ wpisać w polecenie uruchom i poszukać plików lub podłączyć się komuś do drukarki i wydrukować mu jakiś dowcip typu "nie patrz za siebie bo zginiesz!!!" haha, oczywiście w pomysłach można się jeszcze bardzo rozwinąć :-)

 

 

Poprawiony (wtorek, 15 czerwca 2010 00:08)