Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
TcpServer Client Bağlantı Yenileme
#1
Merhaba, Tcpserver ve TcpClient yapısında , diyelim ki server kısmının internet bağlantısı  10 saniyeliğine aniden kesildi ve tekrar geldi. Kendisine bağlı tüm client listesini tekrar nasıl güncelleriz.  İlk akla gelen clientlerin  server ile bağlantıyı koptuğunu anlaması ve tekrar bağlanması için istek yapmaları. Bu mantık doğrumu ?  
Yoksa server tarafında bu listeyi güncellemenin başka bir yolu var mı ? ( Örneğin eski listeye broadcast mesaj atmak ...)
Cevapla
#2
En basit haliyle önerinize katılıyorum. 

client projelerin kendileri (bunu bir sınıf veya servis formu gibi bağımsız bir unit ile) 10 - 15 saniyede bir sunucuya yönelik bağlantı olup olmadığı sordurulup, bağlantı yoksa yeniden bağlanmayı denemesi, o sırada server kapalı veya network kopuk ise exception düşünce bunu yeniden denemesi bana makul bir çözüm olarak gelir ve kullanmaktayım.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#3
bağlantı varım yok mu diye bakmak yerine her işlemde bağlanıp işlem sonunda bağlantıyı kesme şeklinde bana daha mantıklı geliyor.
Cevapla
#4
Eve oda olabilir fakat her saniye bilgi akışı var. Böyle bir durumda bazı cihazlar bunu saldırı kabul edebilir.
Cevapla
#5
(03-03-2019, Saat: 02:34)CesuR Adlı Kullanıcıdan Alıntı: Merhaba, Tcpserver ve TcpClient yapısında , diyelim ki server kısmının internet bağlantısı  10 saniyeliğine aniden kesildi ve tekrar geldi. Kendisine bağlı tüm client listesini tekrar nasıl güncelleriz.

Server ve belirli bir client seviyesinde dusunelim.
    Eger kesinti oldugu anda aralarinda bir veri transferi yoksa kesintinin farkinda bile olmazlar
    Eger sozkonusu client ile bir veri transferi var ise bu durumda client once dogal olarak time-out suresini bekler ve sonrasinda bir exception uretir burada tekrar baglanma denenebilir.

Bir soru da şu olaiblir: kesinti esnasinda gercekten ayrilan client olursa server bunun artik olmadigini nasil anlar veya anlamalimidir?
Cevapla
#6
(03-03-2019, Saat: 12:38)cexx Adlı Kullanıcıdan Alıntı: Bir soru da şu olaiblir: kesinti esnasinda gercekten ayrilan client olursa server bunun artik olmadigini nasil anlar veya anlamalimidir?

Evet, aynen öyle. Aşağıdaki şekilde Server belli aralıklar (her iki saniyede bir ) ile kendisine bağlı olan tüm clientlere mesaj gönderiyor. Server listesinde olup o an düşmüş bir cilent varsa mesaj ona iletilmeyecek. Buna çözüm herhalde yine  biraz karmaşık olacak. Şöyle ki,

Server listesindeki her cliente mesaj gönderecek , mesajı alan her client aldım diye cevap dönecek ki server mesajı alanlar listesinden clienti işaretlesin.  Ama işte o an server tarafıda duraksama yaşarsa ne olur bilemedim Smile)) İşin içinden nasıl çıkarım düşünüyorum.
Cevapla
#7
Wink 
(03-03-2019, Saat: 13:04)CesuR Adlı Kullanıcıdan Alıntı: Ama işte o an server tarafıda duraksama yaşarsa ne olur bilemedim Smile)) İşin içinden nasıl çıkarım düşünüyorum.

Projenin niteligini bilmiyorum ama Allah vere de makinalarin ayni network icinde olsun.. 
Ayni network icinde probelem bir sekilde çözülür. TCP yerine datasnap düşün, session yarat/ yonet vs vs.

Yoksa web uzerinden NAT arkasindaki makinalarla birseyler yapmaya calisiyorsan "eyvah ki eyvah" Wink
Cevapla
#8
paket transferin için kurulacak protokol için önerim daima başarılı sonlandığını ifade eden bir karakter kullanmak ki kendi tercihim bir tilda takip eden ok yani ~ok  şeklinde.

arada koparsa haberiniz olur zaten. Sonunda bunu gördüğünüzde ondan sonra kopan bağlantı sizi üzmez.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#9
Verilerin karşı taraftan doğru geldiğini teyid etmek için CRC kullanabilirsin.
YouTube Delphi Tips
"Yaşlanarak değil, yaşayarak tecrübe kazanılır. Zaman insanları değil, armutları olgunlaştırır" Peyami Safa
WWW
Cevapla
#10
CRC en güzeli.
protokolü kurarken

paket uzunluğu (4 byte) 
+ bu uzunluğu doğrulayan CRC8 ile (1 byte) 
+ gönderilecek verinin kendisi 
+  bu gönderilen veriyi doğrulayan CRC32 (4 byte) 

yapısı en sağlam yapı.. @uparlayan katılıyorum.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Server-client üzerinden Web arayüze erişim SercanTEK 12 7.267 23-02-2023, Saat: 16:08
Son Yorum: SercanTEK
  Database bağlantı sorunu Tevet 6 1.742 20-01-2022, Saat: 13:49
Son Yorum: Tevet
  Client Pc Sistem Bilgileri Loglama frmman 16 11.245 01-12-2021, Saat: 19:58
Son Yorum: Bay_Y
  Access bağlantı woywod 6 1.637 01-10-2021, Saat: 01:20
Son Yorum: woywod
  Server client if komutunun gerçekleşmemesi Nedim 6 1.593 03-06-2021, Saat: 11:46
Son Yorum: Nedim



Konuyu Okuyanlar: 1 Ziyaretçi