TCP/IP 'de timeout süresini azaltma.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
LifeTime
Üye
Mesajlar: 20
Kayıt: 09 Oca 2009 06:59

TCP/IP 'de timeout süresini azaltma.

Mesaj gönderen LifeTime »

Selamlar,

TCP/IP ile bir port numarası üzerinden haberleşirken, LAN bağlantısı koptuğunda bunu program anlayana kadar 10-15 sn geçiyor. Bu süreyi kısaltmanın yada bu kesinti olduğunda programın kısmen kilitlenmesini engellemenin bir yolu var mı ?

Teşekkürler.
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: TCP/IP 'de timeout süresini azaltma.

Mesaj gönderen Battosai »

indy bileşenleri kullanıyorsan readtimeout ve connecttimeout property leri mevcut....indy10 ile birlikte geldi bu özellikler....indy bileşenleri ile çalışırken Thread kullanma haricinde sistemdeki kitlemeyi tam çözebilecek bir durum yok malesef...AntiFreezee var ama tam çözüm değil özellikler süreklilik arz eden işler için thread kullanmak şart....
LifeTime
Üye
Mesajlar: 20
Kayıt: 09 Oca 2009 06:59

Re: TCP/IP 'de timeout süresini azaltma.

Mesaj gönderen LifeTime »

Battosai yazdı:indy bileşenleri kullanıyorsan readtimeout ve connecttimeout property leri mevcut....indy10 ile birlikte geldi bu özellikler....indy bileşenleri ile çalışırken Thread kullanma haricinde sistemdeki kitlemeyi tam çözebilecek bir durum yok malesef...AntiFreezee var ama tam çözüm değil özellikler süreklilik arz eden işler için thread kullanmak şart....
Ben, Delphi7'deki "internet" bileşenindeki "TCPClient" componentini kullanıyorum. Bir çeşit Chat programı ile text formatında bilgiyi başka bir IP adresindeki belli bir Port'a gönderiyorum. Bu sırada bağlantı koparsa sistem 10-15 sn kadar kilitlenip sonra bağlantı koptu hatası verip düzeliyor. Amacım bu süreyi en aza indirmek. Bağlantı yoksa hemen anlayıp işlemleri durdurmak istiyorum.

Çalışan program şu şekilde işliyor:

===============================================================================================

TcpClient2.RemoteHost := '192.168.3.5';
TcpClient2.RemotePort := '60001';
try
TcpClient2.Connect; // Bağlan.
if TcpClient2.Connected then TcpClient2.Sendln(satir) else ShowMessage('Sunucuya Bilgi Gönderilemedi.');
finally TcpClient2.Disconnect // gönderdikten sonra bağlantıyı bırak.

===============================================================================================

Tabii bunu karşılığında da belirtilen adreste başka bir program var o da gelen datayı alıp kayıt ediyor. Onda bir sorun yok o işini yapıyor.
Cevapla