Tek Fotoluk İpucu 81–Internete Bağlı mıyız?

Merhaba Arkadaşlar,

Acaba çok basit ve hızlı bir şekilde internete bağlı olup olmadığımızı nasıl kontrol edebiliriz, hiç düşündünüz mü? Bunun pek çok yolu var aslında. Ancak bir tanesi oldukça hızlı. Basit bir WinAPI yardımıyla bu fonksiyonelliği sağlayabilir ve internete bağlı olup olunmadığını kontrol edebiliriz. Aynen aşağıdaki ekran görüntüsünde yer alan kod parçasında olduğu gibi Winking smile

tfi_81new

Bir başka ip ucunda görüşmek dileğiyle Winking smile

Yorumlar (5) -

  • Hocam bir şeyi anlamadım. Bağlı yazdıktan sonra 4 enum değerini nasıl aynı anda yazdırabildiniz? state değişkenin aynı anda 4 farklı değeri varmış gibi anlaşılmayan bir durum var benim için.
  • Flags niteliği kullandığımız için enum sabitinin sahib olabileceği birden fazla değer otomatik olarak yazdırılabilmekte. state değişkenin int karşılığı olan değer de aslında kendi içinde birden fazla enum değerini içerebilir. Bu nedenle string karşılığı elde edildiğinde, atanmış ne kadar değer varsa elde edilebilmiştir. Bu konuda yeni çıkmış bir yazıyı da tavsiye ederim.

    www.ilkayilknur.com/.../ adresinden ulaşabilirsiniz.
  • Burak abi iyi geceler ,

    programın otomatik olarak yani runtime da internetin bağlı olup olmadığını sınamasını hangi yöntemle sağlayabiliriz , yani anlatmak istediğim windows ta olan, ethernet kablosunu sökünce bağlantı simgesinin değişmesi gibi,
    teşekkürler
  • Ooooo çok güzel bir soru. Teşekkür ediyorum. Aklıma iki yol geliyor. Uygulamanın içerisindeki ilgili kod parçasının belirli aralıklarla bunu kontrol etmesi. Örneğin 3 saniyede 1 gibi. Ama 3 saniyelik zaman aralığı ayarlanabilir olmalı.

    Bir diğer yol da, soketten kabloyu çektiğimiz anda donanımın bir şekilde işletim sistemine sinyal gönderiyor olmasına bağlı. Eğer böyle bir sinyal gidiyorsa(ben çıktım gibisinden, çünkü örneğin USB çıkartınca işletim sistemi bunu algılayabiliyor), bu sinyali yakalayan hizmeti bulmak lazım. Düşük seviyeli bir Win32 API olabilir ama WMI tarafında bunun için bir fonksiyonellik var mı bilemiyorum. Araştırmak lazım.

    Aklıma gelen ilk fikirler bu şekilde. Belki kolay bir yolu bir fonksiyonu vardır ama bilemiyorum. Araştırmak lazım. Siz veya başka bir takipçimiz bir çözüm yolu bulursanız lütfen buradan da paylaşılsın ki insanlar bilgilensinler ;)

    • Selamlar hocam. ipucu için teşekkürler. Belirttiğiniz senaryo için kullandığım kod bloğunu aşağıya yazıyorum. Bu daha basit ve başka bir versiyonu olsun. Smile Console uygulamasında test edebilirsiniz.

      Gerekli kütüphane:
      using System.Net.NetworkInformation;

      Kod bloğu:
      class Program
          {
              private static bool _networkStatus;
              public static bool NetworkStatus
              {
                  get { return _networkStatus; }
                  set
                  {
                      _networkStatus = value;
                      Console.WriteLine("İnternet Bağlantı Durumu: {0}", value);
                  }
              }
              
              static void Main(string[] args)
              {
                  NetworkChange.NetworkAvailabilityChanged += AvailabilityNetworkChanged;
                  Console.ReadKey();
              }

              private static void AvailabilityNetworkChanged(object sender, NetworkAvailabilityEventArgs e)
              {
                  NetworkStatus = e.IsAvailable;
              }
          }

Yorum ekle

Loading