İnternet Yoksa Program Çalışmasın
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 152
- Kayıt: 16 May 2014 11:23
Re: İnternet Yoksa Program Çalışmasın
İ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
Bu hizli bir yontem fakat pcnin ag durumunu alarakda bunu yapablrsn
Kolay gelsin
Re: İnternet Yoksa Program Çalışmasın
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;
Re: İnternet Yoksa Program Çalışmasın
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.
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...
Mustafa Kemal Atatürk...
Re: İnternet Yoksa Program Çalışmasın
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.
- greenegitim
- Üye
- Mesajlar: 713
- Kayıt: 28 Nis 2011 10:33
- Konum: İstanbul
Re: İnternet Yoksa Program Çalışmasın
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.
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!
Re: İnternet Yoksa Program Çalışmasın
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;
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.
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;
İ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.
Re: İnternet Yoksa Program Çalışmasın
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
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
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
Re: İnternet Yoksa Program Çalışmasın
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?..
Re: İnternet Yoksa Program Çalışmasın
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
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
Re: İnternet Yoksa Program Çalışmasın
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 :

Local network bağlı, IP adresim aktif fakat internete çıkamıyorum. Component de online sın diyor.. Buyrun :

Re: İnternet Yoksa Program Çalışmasın
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ş
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...
Mustafa Kemal Atatürk...
Re: İnternet Yoksa Program Çalışmasın
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.warder yazdı:Düşünsenize microsoft indy nin sitesine ping atıp öğreniyormuş
There's no place like 127.0.0.1
Re: İnternet Yoksa Program Çalışmasın
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
İ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...
Mustafa Kemal Atatürk...
Re: İnternet Yoksa Program Çalışmasın
Münazara konusu olmuş.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 .
(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.
