C# İle Ping Atma

Evet arkadaşlar uzun zamandan beri blog’ta bir şeyler paylaşma sıkıntısı yaşıyorum. Bende en iyisi eski çalışmalarımı bir bir dökeyim dedim. Öncelikle size birazdan anlatacağım programın yapım hikayesini anlatayım. Bildiğiniz üzere bir zamana kadar Türk Telekom tek internet sağlayıcısıydı sonra d-smile çıktı, daha sonrada biri.net kendisini gösterdi… Biz internete bağlandığımız zaman bunların üçü de vardı aslında ama bulunduğumuz yer itibari ile –okuduğumuz yer küçük bir kasaba 7300 nüfuslu- Türk Telekom’u seçtik, tabi bir ara keşke bağlatmasaydık da dedik ama artık her şey için çok geçti. İnternetimiz bir geliyor, bir gidiyor sonra hiç gelmiyordu. Uzun telefon görüşmeleri ve biraz tehditten sonra zar zor bir teknik servis gönderebildiler. Tamam hiçbir değişiklik olmamıştı ama en azından bulunduğumuz yerde ki bayii müdürü gibi hata sizden kaynaklanıyor dememişti. Hatlarda parazit mi varmış ne gene düzelmedi fakat gel zaman git zaman internetin kesilmeden bağlı kalma süresi 5-6 saatlere ulaştı. Bu bizim için çok güzel bir şeydi, internete 5 ay boşu boşuna para verdikten sonra, Neyse konuyu dağıtmadan işte bu internetlerin çok kısa zamanlarda gel git yaşamasından dolayı internetin ne zaman var ne zaman yok olduğunu anlayabilmek için bir tane bat dosyası hazırladım.
Ping www.google.com.tr komutunu alt alta baya kopyaladım. Bir sıkıntı olduğunda oradan bakıyordum sonra baktım ki her seferinde bat dosyasını açmam gerekiyor, En iyisi bunu C# ile yaptırmanın yolunu bulmak diyerekten biraz araştırmaya giriştim. Ve işe yarar birkaç şey bulabildim. Benim için çözmek biraz zaman almıştı, sizin içinde öyle olacak J Belki birilerinin işine yarar. konumuz C# ile uzaktaki bir bilgisayara ping atma. Başlıyoruz…
Çalışma Dosyası C#-ile-Ping-Atma

Ben yarım saat gibi bir süreyle Kod yazımını bitirdim. Aslında yanlarına açıklamalarını yazıyordum ama kendi kendinize çözebilirseniz daha yararlı olacağını düşündüm ve bazı kodları internetten araştırdığınızda karşınıza çok güzel yeni şeyler geliyor. Onun için size direk çalışma notunu atıyorum. Ekran görüntüsü şöyle bir şey olacak. Aslında systemTray’da da iconlar var internet olduğunda yeşil olmadığında kırmızı oluyor. Neyse siz en iyisi dosyayı indirip bi inceleyin….
-------------------------------------------------------------------------------------------------
using System.Threading;
using System.Net.NetworkInformation;

namespace Net_Kontrol_Ping_CSharp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
AutoResetEvent Tekrarlama = new AutoResetEvent(false);
private void PingGonder()
{
System.Net.NetworkInformation.Ping PingGonder = new System.Net.NetworkInformation.Ping();//Nesne oluşturuldu.

PingGonder.PingCompleted += new PingCompletedEventHandler(PingGonder_Tamam);

byte[] PaketBoyutu = Encoding.ASCII.GetBytes("................................");

PingOptions PaketAyarlari = new PingOptions(50, true);

PingGonder.SendAsync("www.google.com", 5000, PaketBoyutu, PaketAyarlari, Tekrarlama);
}
private void PingGonder_Tamam(object sender, PingCompletedEventArgs e)
{
if (e.Cancelled)
{
lblPing.Text = "İptal Edildi.";
notifyIcon1.Icon = new Icon("6.ico");
lblPing.ForeColor = Color.Black;
((AutoResetEvent)e.UserState).Set();
}
else if (e.Error != null)
{
lblPing.Text = "Adres Bulunamadı.";
notifyIcon1.Icon = new Icon("6.ico");
lblPing.ForeColor = Color.Black;

((AutoResetEvent)e.UserState).Set();
}
else
{
PingReply pingYaniti = e.Reply;

PingSonucunuGoster(pingYaniti);
}

}

public void PingSonucunuGoster(PingReply pingYaniti)
{
if (pingYaniti == null)
{

lblPing.Text = "Yanıt Alınamadı.";
notifyIcon1.Icon = new Icon("6.ico");
lblPing.ForeColor = Color.Black;
return;
}
else if (pingYaniti.Status == IPStatus.Success)
{

lblPing.Text = "İnternet Aktif...";
notifyIcon1.Icon = new Icon("7.ico");
lblPing.ForeColor = Color.Red;

}
else
{

lblPing.Text = "ping Başarısız...";
notifyIcon1.Icon = new Icon("6.ico");
lblPing.ForeColor = Color.Black;
}
notifyIcon1.Text = lblPing.Text;
}

private void timer1_Tick(object sender, EventArgs e)
{
PingGonder();
}


private void çıkışToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}

private void httpbirkanaydinblogspotcomToolStripMenuItem_Click(object sender, EventArgs e)
{
System.Diagnostics.Process.Start("http://birkanaydin.blogspot.com");


}
private void Form1_Resize(object sender, EventArgs e)
{
this.Hide();
}

private void notifyIcon1_Click(object sender, EventArgs e)
{

this.Show();
this.WindowState = FormWindowState.Normal;
}
}
}


Yorumlar

Adsız dedi ki…
Birkan Bey Merhaba,

güzel bir çalışma olmuş bende bu şekilde içinde ping işlemi olan bir proje üstünde çalışıyordum ve yaşadığım problemi araştırırken sitenizi gördüm fakat yaşadığım sorunu sizin projenizdede gördüm.

Exe çalışıyorken memory sürekli artıyor bunun bir resetlemesini göremedim açıkçası. Eğer siz bulursanız buraya yazarsanız sevinirim.

Serkan
Birkan Aydın dedi ki…
Aslına bakarsanız ben öyle bir artışın farkında dahi varmadım :) eğer çözmünü bulurda paylaşırsanız çok sevinirim. memoryden kastınız ram ise eğer

http://msdn.microsoft.com/en-us/library/aa664640%28VS.71%29.aspx

ya da(sanırım işini bu görür)

http://msdn.microsoft.com/en-us/library/xe0c2357.aspx

bu adresten daha detaylı bilgi alabilrsin.

Popüler Yayınlar