Merhaba, bu yazıda bir istek üzerine yaptığım basit bir ping uygulamasını paylaşacağım.
Hemen hızlıca uygulamamızın yapımına geçelim. Öncelikle formumuza 1 adet Textbox (txtAdres), 1 adet Buton (btnBaslatDurdur), 2 adet Label (lblEnDusukPing, lblEnYuksekPing), 1 adet Listbox (lbxBilgi) ve 1 adet de Timer (timer1) ekleyelim. Timerımızın (timer1) interval aralığını "1000" (1 sn) olarak ayarlayalım.
Formumuzu alttaki resimdeki gibi düzenleyelim.

Şimdi kodlarımızı yazmaya geçelim.
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Net.NetworkInformation;
namespace NetworkTesterDemo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Ping mPing = new Ping(); //Ping sınıfından bir nesne oluşturdum
private void btnBaslatDurdur_Click(object sender, EventArgs e) //Butonun Click olayını ekledim
{
if (btnBaslatDurdur.Text == "Başlat") //Başlat butonuma bastığımda olacaklar
{
lbxBilgi.Items.Add("Ping atma başlatıldı. " + DateTime.Now);
timer1.Enabled = true;
btnBaslatDurdur.Text = "Durdur";
btnBaslatDurdur.BackColor = Color.Red;
string ilkping = pingolcer().ToString(); //En düşük ve yüksek ping değeri için referans değeri alıyorum
lblEnDusukPing.Text = ilkping;
lblEnYuksekPing.Text = ilkping;
}
else //Durdur butonuma bastığımda olacaklar
{
lbxBilgi.Items.Add("Ping atma durduruldu. " + DateTime.Now);
timer1.Enabled = false;
btnBaslatDurdur.Text = "Başlat";
btnBaslatDurdur.BackColor = Color.Lime;
this.BackColor = Color.White;
}
}
int pingolcer() //pingi ölçmek için ayrı metot oluşturdum
{
try
{
PingReply reply = mPing.Send(txtAdres.Text, 1024); //Pingimi attım
if (reply != null) //Eğer karşı taraftan yanıt geldiyse
{
//Pingin durumunu, milisaniye cinsinden gecikmesini ve ping atılan adresi listbox yazdırdım
lbxBilgi.Items.Add("Durum : " + reply.Status + " \n Ping : " + reply.RoundtripTime.ToString() + " \n Adres : " + reply.Address);
}
return Convert.ToInt16(reply.RoundtripTime);
}
catch
{
timer1.Enabled = false;
lbxBilgi.Items.Add("HATA: Bağlantı zaman aşımına uğradı!");
return 0;
}
}
private void Timer1_Tick(object sender, EventArgs e) //Timerın Tick olayını ekledim
{
int p = pingolcer(); //Timer başlatıldığında her saniye pingolcer metotunu çağırdım
if (p <= Convert.ToInt16(lblEnDusukPing.Text) && p != 0)
lblEnDusukPing.Text = p.ToString();
else if (p >= Convert.ToInt16(lblEnYuksekPing.Text))
lblEnYuksekPing.Text = p.ToString();
if (p<50 && p != 0) //Formun arkaplan rengini pingin durumuna göre her saniye güncellensin istedim
this.BackColor = Color.Green;
else if (50<=p && p<100)
this.BackColor = Color.Orange;
else
this.BackColor = Color.Red;
//Listboxa her veri eklendiğinde eklenen veri gözüksün diye, satırı kaydırdım
lbxBilgi.SelectedIndex = lbxBilgi.Items.Count - 1;
}
}
}
Programımızı çalıştıralım. Altta çalışır halini görebilirsiniz.

Projenin tam halini indirmek için tıklayın.
Projede eksiklik veya hata görürseniz yorumlarda bana bildiriniz.
Sizin de istediğiniz bu tarz ufak programlar var ise yine yorumlarda belirtebilirsiniz.
Duyuru: Oyun içi (Alt+Tab yapmadan), ekranın istediğiniz bir yerinde internet bağlantınızın durumunu anlık görüntüleyebileceğiniz bir programı ilerki zamanlarda forumda paylaşacağım. Şu an piyasada Msi Afterburner tarzında çalışan, ping durumunu görüntüleyebileceğiniz bir program yok ya da ben bulamadım. (Kodlarını şimdilik paylaşmayacağım. Sadece .exe'yi paylaşacağım.)
Takipte kalın efendim, iyi forumlar. 😉