İnternet Yoksa Program Çalışmasın

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
anonymousdelphicoder
Üye
Mesajlar: 152
Kayıt: 16 May 2014 11:23

Re: İnternet Yoksa Program Çalışmasın

Mesaj gönderen anonymousdelphicoder »

İndy http nesnesini kullanarak kendi sitenden get yap eger connection exceptionu firlatrsa net yoktur tabi yuzde yuz degl bazen soketler net olsada anlik olarak kopma yasayabilir o yuzden net yok program baslayamaz mesajini ver ve yeniden dene butonu koy neti varsa tusa basar'


Bu hizli bir yontem fakat pcnin ag durumunu alarakda bunu yapablrsn

Kolay gelsin
Kullanıcı avatarı
The_aLiEn
Üye
Mesajlar: 28
Kayıt: 09 Kas 2010 02:35
Konum: Trabzon
İletişim:

Re: İnternet Yoksa Program Çalışmasın

Mesaj gönderen The_aLiEn »

Yıllarca C++ kullanan birisinin http.Get ve exception ifadelerinde kafasının durması biraz garip değil mi? Gayet yerinde ve gayet yönlendirici bir cevaptı bence anonymousdelphicoder'ın verdiği cevap.

Kod: Tümünü seç

var
  h: TIdHTTP;
begin
  h := TIdHTTP.Create(nil);
  try
    try
      h.Get('http://google.com');
    except
      raise Exception.Create('Indy Error/Info');
    end;
  finally
    FreeAndNil(h);
  end;
end;
Kullanıcı avatarı
warder
Üye
Mesajlar: 255
Kayıt: 10 Mar 2004 04:59

Re: İnternet Yoksa Program Çalışmasın

Mesaj gönderen warder »

TIdIPWatch bileşeni internet bağlantınızın durumu için istediğiniz işi yapıyor.
OnStatusChanged ile de bağlantının durumu değiştiğinde tetiklenen bir olaya da sahip.
Kendi kullanımımdan örnek aşağıda..
Örnekteki bOnline boolean global bir değişken.. program genelinde internete bağımlı olan her yerde bu değişken kullanılıyor.
Internet isimli obje de TIdWatch bileşeni...
C++ geçmişinizle delphi değil de C++ Builder kullanmanızı tavsiye ederim.

Kod: Tümünü seç

// ---------------------------------------------------------------------------
void __fastcall TFrmAna::FormActivate(TObject *Sender) {
	if (!Internet->Active) {
		Internet->Active = true;
		Internet->ForceCheck();
	}
}
// ---------------------------------------------------------------------------
void __fastcall TFrmAna::InternetStatusChanged(TObject *Sender) {
	if (Internet->IsOnline)
		bOnline = true;
	else {
		Application->MessageBox(L"İnternet bağlantınız mevcut değil!", L"Denetim Uyarısı",
			MB_OK + MB_ICONINFORMATION);
		bOnline = false;
	}
	Shape->Brush->Color = bOnline ? clGreen : clRed;
	Application->ProcessMessages();
}
... Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!
Mustafa Kemal Atatürk...
Kullanıcı avatarı
The_aLiEn
Üye
Mesajlar: 28
Kayıt: 09 Kas 2010 02:35
Konum: Trabzon
İletişim:

Re: İnternet Yoksa Program Çalışmasın

Mesaj gönderen The_aLiEn »

TIdIPWatch nesnesi local network ün bağlı olup olmadığını kontrol eder, gerçek internet bağlantısının varlığını değil. Network'e bağlı olabilir ama network sorunlarından ötürü internete çıkamıyor olabilirsiniz. TIdIPWatch internete çıkamama durumunu kontrol edemez.
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: İnternet Yoksa Program Çalışmasın

Mesaj gönderen greenegitim »

Ping atırabilirsiniz
belirli bir sayfanız olur bu sayfaya bağlanır oradaki bilgiyi kontrol eder kendinkiyle karşılaştırır aynı ise internete bağlanmış karşılaştırma yapmış demektir aynı değil sayfaya ulaşamamışsa internet yok demektir.
Mücadele güzelleştirir!
Kullanıcı avatarı
cengaver
Üye
Mesajlar: 111
Kayıt: 01 Nis 2014 05:02
Konum: İstanbul

Re: İnternet Yoksa Program Çalışmasın

Mesaj gönderen cengaver »

Diğer arkadaşların bahsettiği gibi doğrudan denetlemek için ping veya indy'nin diğer bileşenleri de kullanılabilir fakat ben özünde aynı olmakla birlikte farklı bir yöntem daha önereceğim;

internet üzerindeki bir XML dosyasını okutabilirsin. Bu yöntem senin internet erişimin olup olmadığını dolaylı da olsa denetlemene yardım eder. Mesela bu iş için Merkez Bankası'nın günlük kurlarını yayınladığı XML dosyaları okumaya çalışarak yapabilirsin.

Misal;

Kod: Tümünü seç

function Internettemiyim: Boolean;
var
  aXML :TXMLDocument;
begin
  Result := TRUE;
  try
     aXML := TXMLDocument.Create(Application);
     aXML.FileName := 'http://www.tcmb.gov.tr/kurlar/201401/02012014.xml' { TCMB'de tatiller için kur yayınlanmaz, bir iş günü seçmelisiniz...}
     aXML.Active   := True;
  except
     Result := FALSE;
  end;
  aXML.Active := FALSE;
  FreeAndNil(aXML);
end;
Bu yöntem ağ yöneticisinin senin seçtiğin web sitelerine erişimi kapatması durumunda işe yaramayacaktır. Ama belli bir web sitesini network yöneticisiyle anlaşarak erişilebilir kılabilirsen bu yöntem sana internette olup olmadığını kesin olarak söyler.

İnternette olup olmadığını güncellemeleri yapabilmek için kontrol etmek istediğini söylemiştin. Bu durumda kendi web sitende senin bildiğin bir FTP klasörüne basit bir xml dosyası koyup onu bu fonksiyonla okutmaya çalışırsan hedefine ulaşırsın diye düşünüyorum.
sako
Üye
Mesajlar: 476
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

Re: İnternet Yoksa Program Çalışmasın

Mesaj gönderen sako »

uzun uzun kod yazmana gerek yoki linkteki component işini görecektir. İnternetin olup olmadığını kontrol ediyor.

http://www.dosya.tc/server32/bcEaWq/onlineip.rar.html
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
Kullanıcı avatarı
The_aLiEn
Üye
Mesajlar: 28
Kayıt: 09 Kas 2010 02:35
Konum: Trabzon
İletişim:

Re: İnternet Yoksa Program Çalışmasın

Mesaj gönderen The_aLiEn »

Lütfen verilmiş cevapları dikkate alın. Component göndermeden önce de lütfen kodu inceleyin. LocalIP fonksiyonu, adı üzerinde lokal IP bilgisini alır. Birkaç adım sonrasına gidersek, bu da network ün olup olmadığını kontrol eder, internete çıkabiliyor musunuz çıkamıyor musunuz kontrol etmez. Component'i Form'a koyun, aktif edin, modemi bi kapatın bakalım neler olacak?..
sako
Üye
Mesajlar: 476
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

Re: İnternet Yoksa Program Çalışmasın

Mesaj gönderen sako »

Ben hem büyük bir ağ içerisinde çalışan bilgisayarda denedim hem de ADSL ve bildiğimiz USB tipi modemlerle denedim hepsinde internet kesildiğinde offline açık olduğıunda da online uyarısı verdi.
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
Kullanıcı avatarı
The_aLiEn
Üye
Mesajlar: 28
Kayıt: 09 Kas 2010 02:35
Konum: Trabzon
İletişim:

Re: İnternet Yoksa Program Çalışmasın

Mesaj gönderen The_aLiEn »

Ben kendimi anlatamıyorum sanırım. Bu gönderdiğiniz component olsun, TIdIPWatch olsun hatalı çalışmakta. Çünkü ikisi de local bağlantıyı kontrol etmekte. Hiçbiri gerçekten internet bağlantısını test etmemekte. Eğer internet bağlantısı kontrolüne dayalı iş kritik şeyler varsa ve kontrolü bu component lara bırakıyorsanız uygulamanız hatalı çalışacaktır. Daha önce de söylediğim gibi local bağlantının varlığı internete çıkılabiliyor anlamına gelmez. Programcılar olarak bu temel ağ bilgisini nasıl atlarsınız anlayamıyorum...

Local network bağlı, IP adresim aktif fakat internete çıkamıyorum. Component de online sın diyor.. Buyrun :
Resim
Kullanıcı avatarı
warder
Üye
Mesajlar: 255
Kayıt: 10 Mar 2004 04:59

Re: İnternet Yoksa Program Çalışmasın

Mesaj gönderen warder »

Hocam genellemeyelim. lütfen.
Söyledikleriniz belki de unuttuklarımızdır.
Sizin ipwatch ilk yazdığınızı okuduğumda ilk aklıma gelen buydu.. "Evet unutmuşum.."
Tebrik ederim iyi bir ayrıntı verdiniz.. unuttuğumu bırakın, bilmiyorsam da öğrendim. Konuyu çok ilerde okuyacaklar açısından da mesaj alındığına göre bence yetsin.
Ancak her durumda bir alternatif. Kritik işlemlerle uğraşacak programcı o ayrıntıyı atlayıp, forumlarda !kritik sorular sormaz.
Windows un konuyla ilgili API leri olduğuna eminim. Hani şu meşur mesajlarla ilgili.. (Sınırlı bağlantı vs.)
Sağa sola ping atıp, döviz kuru okuyup, elalemin sitesine get gönderip gelen yanıttan online mıyım diye çırpınan bir programcıya bu durum ne kadar yakışır bunu tartışmanız yerinde olabilir. ipwatch gene masum :)
Aksilenmek için yazmadım. Alınganlık olmasın, sayılmasın.
Düşünsenize microsoft indy nin sitesine ping atıp öğreniyormuş :)
... Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!
Mustafa Kemal Atatürk...
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: İnternet Yoksa Program Çalışmasın

Mesaj gönderen SimaWB »

warder yazdı:Düşünsenize microsoft indy nin sitesine ping atıp öğreniyormuş :)
Nereye ping atıyor bilemem ama bir yerlere ping atmadan yada Get/Post etmeden yapamadığına eminim. @The_aLiEn'ın da dediği gibi bunun başka alternatifi yok. Dış dünyada bir sayfaya erişmeden tam olarak bunu test edemezsiniz. Benim tavsiyem de IdHttp.Get ile bir sayfayı sınamaktır ve genelde bot.whatismyipaddress.com adresini kullanırım.
There's no place like 127.0.0.1
Kullanıcı avatarı
warder
Üye
Mesajlar: 255
Kayıt: 10 Mar 2004 04:59

Re: İnternet Yoksa Program Çalışmasın

Mesaj gönderen warder »

INetwork interface başlıklı derin bir apisi varmış. Aşağıdaki adreste detayları mevcut.
İnternette örneklerde var. İlgilenen arkadaş araştırıp bir yerlere varır ve belki burada paylaşır.
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
... Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!
Mustafa Kemal Atatürk...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: İnternet Yoksa Program Çalışmasın

Mesaj gönderen mrmarman »

SecruteryBO yazdı:Merhaba arkadaşlar yapacağım programda sürekli güncelleme vesayre olacağı için şöyle birşey istiyorum internete bağlı değilse program çalışmasın nasıl yapabilirim ? Şimdiden çok teşekkürler ve iyi günler .
Münazara konusu olmuş.

(1) Programda güncelleme olacağına göre bir web hosting sahibisiniz sonucuna varabiliriz değil mi?
(2) Program her çalıştığında hosta koyacağınız bir text dosya üzerinden güncelleme kontrolü yapmıyor musunuz ?
(3) Bu işlem başarısız olduğu durumlarda internet'te sorun var deyip projenizi kapatırsınız. Hosting firmalarının verdiği hizmet ortalama %99 oranında online olmak üzerine kurulu.
(4) Dilersen yapılacak her sorguyu yine hosttaki bir MySQL tablosunda LOG'lar eski sürüm kullanıp da güncelleyen / güncellemeyen listesine sahip olabilirsin. :idea:
Resim
Resim ....Resim
Cevapla