İçeriğe atla

24 Ocak 2011

6

C# internet bağlantı kontrolü

Bu uygulamamızda c# kullanarak internet bağlantımızın olup olmadığını kontrol edeceğiz. “Neden böyle birşeye ihtiyacımız var ki?” sorusuna cevap vererek başlayalım isterseniz.
Bunun birçok cevabı olabilir tabi. Ben genel ve basit bir senaryo ile anlatmaya çalışayım. Diyelim ki tasarladığımız uygulama internetten herhangi bir şekilde veri çekecek. Eee ne var bunda diyebilirsiniz tabi :) ama kodlamayı tamamladığımızda, bu uygulamamız internet bağlantısı olmayan bir bilgisayarda çalıştırıldığında hiç te hoş olmayan bir hata üretip kapatılmak zorunda kalacaktır. Bizim uygulamamız en basit haliyle internet bağlantısına sahip bir bilgisayarda mı çalışıyorum yoksa bağlantım yok mu sorusuna kendi içinde cevap verebilsin ve madem hata verecek o zaman benim istediğim şekilde hata versin sonuçta benim programım yani benim sözümü dinleyecek diyerek başlayalım :D

Eee nerden başlıyoruz peki?
Ben ilk olarak VS-2010 da bir windows form application projesi açıyorum

burada vurguladığım ilk yer .net framework 2 kullanarak bu uygulamayı yazmak istediğim olacak. Neden derseniz uygulamamızın daha yüksek bir .net framework ile kodlanması bu kütüphaneye sahip olmayan bilgisayarlarda çalışırken ilk olarak kütüphanenin indirilip kurulmasını gerektirecektir. Bunu şuan istemiyorum tabi :D Neyse devam edelim.
Projemizi bu şekilde açtıktan sonra karşımıza basit bir form çıkacak. ihtiyacımız olan componentler (kendi senaryomda sadece bağlantım varmı kontrol ediyorum siz ihtiyacınıza göre şekillendirebilirsiniz) sadece bir adet button ve bir adet label.

Bunları eklediğimizde form görünümümüz şu şekilde olacaktır. Yapacağımız şey sadece butona tıklamak ve sonucu label de görüntülemek olacak. Ben botun ve label in isimlerini kendime göre yapacağım. Siz kodu istediğiniz şekilde düzenleyebilirsiniz.
Şimdi tasarım kısmını bitirdiğimize göre gelelim kod kısmına. İlk olarak kontrolü nasıl yapacağımızı anlatayım.

Uygulamamıza windows a ait bir kütüphane dosyası ekleyip bunun üzerinden bir fonksiyon türetip bu fonksiyonu kullanacağız. Karmaşık göründüğüne bakmayın aslında basit :)
Bunu uygulamamızın tasarım kısmında basit bir kodla yapabiliriz. İlk olarak uygulamamızın kütüphaneleri uygulamaya dahil edebilmesi için şu kodu en başa ekliyoruz.

using System.Runtime;
using System.Runtime.InteropServices;

Evet artık uygulamamız kütüphane dosyalarını kullanabilir. Şimdi de kullanacağımız (“wininet.dll”) kütüphanesini uygulamaya dahil edelim

[DllImport("wininet.dll")]
        public static extern bool InternetGetConnectedState(ref InternetConnectionState lpdwFlags, int dwReserved);

Şimdi de bu eklenen kütüphaneden enum değer üreten fonksiyonumuzu yazalım

public enum InternetConnectionState : int
        {
            INTERNET_CONNECTION_OFFLINE = 0x20,
            INTERNET_CONNECTION_CONFIGURED = 0x40
        }

Evet şimdi de sadece bu fonksiyondan gelen değerimizi bir bool değere atayıp bunu kontrol ettirmeye. O da şu şekilde olacak

private void button1_Click(object sender, EventArgs e)
        {
            InternetConnectionState flags = 0;
            bool isConfigured = (flags & InternetConnectionState.INTERNET_CONNECTION_CONFIGURED) != 0;
            bool isConnected = InternetGetConnectedState(ref flags, 0);
            //sonuç
            if (isConnected == true)
            {
                label1.Text = "İnternete Bağlısınız"; label1.ForeColor = Color.Green;
            }
            else
            {
                label1.Text = "İnternet yok"; label1.ForeColor = Color.Red;
            }
        }

Şimdi de bir çalıştırıp bakalım ne olacak :)

Gördüğünüz gibi uygulamamız çalışıyor :) Bu Basit bir uygulamaydı tabi siz istediğiniz şekilde düzenleyebilirsiniz. Bir sonraki uygulamamızda bu yöntemi kullanarak uygulamalarımıza en basit haliyle sürüm kontrol mekanizması yerleştirmeyi göreceğiz. Şimdilik iyi çalışmalar.

6 Comments Post a comment
  1. irfan
    May 4 2011

    bn bir mail gondrme sistemi yapıyorum ve gonderecegım mail adreslerı masa ustunde bı metın dosyasında olmalı ben bu maıl programı ıle bır buton ıle bu dosyaya erısmek ıstıyorum ve kıme gonderecegım bolumunune gelmesını ıstıyrum bana yardımcı olursanız cok tesekkur ederım ıyı gunler…

    Cevapla
  2. Sercan
    Haz 28 2012

    Kardeş burda niye hata veriyor acaba ?

    bool isConfigured = (flags &amp InternetConnectionState.INTERNET_CONNECTION_CONFIGURED) != 0;

    &amp niye koyduk buraya hem ve o ney ?

    Cevapla
    • Yönetici
      Tem 28 2012

      O kod eklentisinin bir hatası olmuş.Kod html de & yani “ve” sembolünün kodu.Doğru kod aşağıda.
      bool isConfigured = (flags & InternetConnectionState.INTERNET_CONNECTION_CONFIGURED) != 0;

      Cevapla
  3. Tevfik Yörük
    Eki 6 2012

    Eline sağlık kodlar işime yaradı.

    Cevapla

Share your thoughts, post a comment.

(required)
(required)

Note: HTML is allowed. Your email address will never be published.

Subscribe to comments