thread hk
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
thread hk
Merhaba arkadaşlar, tcp client ile client dinlediğim bir threadım var, kullanıcının bağlantısı koptuğunda ya da bir şekilde sunucula bağlantısı kesildiğinde haliyle tcpclient hataya düşüyor ve thread da sorunlar oluşmaya başlıyor. tcp client ı bu durumda kontrol edip tekrar sunucuya bağlıyorum. sunucuya mesaj gönderreibliyor ama gelen mesajları okuması için yazdığım thread hata verdiği için tekrar çalışmıyor. hataya düşen threadı nasıl kontrol edebilirim ? ya da nasıl çalıştırabilirim. fikirlerinizi bekliyroum
Re: thread hk
indy gibi 3parti bileşenleri kullan, bunlarıda thread içine almana gerek yok, kodlarını hatırlamıyorum, ama yanılmıyorsam kendisi thread kullanıyor, ayrıca senin yazmana gerek yok. Sen onreceive eventine kodunu yaz sadece, mesaj gelince o zaten tetikliyecektir.
kolay gele
kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Re: thread hk
@Freeman dediği gibi, Indy AThread.Connection kullanır. Tüm işlemleri Thread içerisindedir. Bu yüzden diğer socket bağlantı tiplerine (Örn: Pure WinSock) göre daha yavaş ama sağlam çalışır. Bağlantını sonlandırmak yada ilgili bağlantıya müdahale etmek için AThread.Connection.Disconnect demen yeterli olacaktır.
Re: thread hk
konuyla ilgili cahilliğime verin ama internette araştırma yaptığıma göre yada anladığıma göre indy nin tcp client ını sürekli readln modda tutmak için ya timer ya da thread kullanmak gerekiyormuş, diğer türlü readln tutmak için ne yapmam gerekiyor kısa bir algoritma verebilecek varmı ? bende araştırıyorum bulursam burada paylaşacağım
Re: thread hk
Cok baglanti olacaksa indy kullanmak büyük hata olur.
Indy client basina bir thread olusturur.
Indy client basina bir thread olusturur.
kıdemsiz üye
Re: thread hk
Yaklasik 125 client baglanacak, ne onerirsiniz peki?
Re: thread hk
Kendi projelerimde TServerSocket, TClientSocket kullanıyorum ve herhangi bir ikinci bir thread ihtiyacım olmadı.
Hata olduğundan zaten bunu yakalayabiliyor bertaraf edebiliyorsunuz.
Hataya meydan veren client'in IP'sini de bildiğinizden onu listeden düşüp loglayabiliyorsunuz da...
Hata kodlarını CASE ile isimlendirebilmekle birlikte...
ServerSocket ile ve ClientSocket için ayrı ayrı error oluştuğunda... kısaca şundan bir ServerSocket bir de ClientSocket için deneyin... Hata projenizi bloke etmeden LOG ile değerlendirilip, 0 kodu ile bertaraf edilecektir.
Zaten Socket.RemoteAddress ile IP'sini de alabildiğinizi hatırlıyorsunuzdur. Böylece IP bazında hataya sebebiyet veren clienti soruşturabilirsiniz de...
Hata olduğundan zaten bunu yakalayabiliyor bertaraf edebiliyorsunuz.
Hataya meydan veren client'in IP'sini de bildiğinizden onu listeden düşüp loglayabiliyorsunuz da...
Hata kodlarını CASE ile isimlendirebilmekle birlikte...
ServerSocket ile ve ClientSocket için ayrı ayrı error oluştuğunda... kısaca şundan bir ServerSocket bir de ClientSocket için deneyin... Hata projenizi bloke etmeden LOG ile değerlendirilip, 0 kodu ile bertaraf edilecektir.
Kod: Tümünü seç
procedure TForm1stMenu.ServerSocket1ClientError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
MemoLog.Lines.Add( Format( 'Server - ErrorCode = %d', [ErrorCode] ) );
ErrorCode := 0;
end;
Re: thread hk
Mecbur kalmadıkça Indy kullanmıyorum. Bir çok projede Synapse kullandım. CPU/RAM kullanımı sizin için önemli ise tavsiye ederim.
There's no place like 127.0.0.1