Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Problem mit ClientSocket + MultiThreading (https://www.delphipraxis.net/14431-problem-mit-clientsocket-multithreading.html)

Chendrak 9. Jan 2004 11:44


Problem mit ClientSocket + MultiThreading
 
Hi DPler :)
Ich bin gerade dabei einen Serverchecker zu programmieren. Es gibt einmal die Möglichkeit, den entsprechenden Server zu pingen (funktioniert auch wunderbar) und es soll die Möglichkeit geben, zu einem bestimmten Port auf diesem Server zu verbinden. Das ganze läuft über Threads und die Komponenten werden dynamisch durch die Threads erstellt.
Nun zu meinem Problem.
Die Komponenten zur Direktverbindung zum Server (TClientSocket) werden ordnungsgemäß erstellt und die Werte und Ereignisse zugewiesen.
Code:
...
else
   begin
     ConnCompo := TClientSocket.Create(Form1);
     ConnCompo.Name := 'MyConnCompo'+IntToStr(ThreadId);
     ConnCompo.Host := PingHost;
     ConnCompo.Port := CPort;
     ConnCompo.OnConnect := ConnFunc;
     ConnCompo.OnConnecting := Connecting;
     ConnCompo.OnRead := ConnRead;
     ConnCompo.OnError := ConnError;
     ConnCompo.ClientType := ctNonBlocking;
     //Timer zum automatischen Disconnecten nach 5 Sekunden (falls Verbindung zustande kam und ggf. Daten gelesen wurden)
     DiscTimer := TTimer.Create(Form1);
     DiscTimer.Name := 'DiscTimer'+IntToStr(ThreadId);
     DiscTimer.Interval := 5000;
     DiscTimer.Enabled := False;
     DiscTimer.OnTimer := TimerFunc;
     Connected := False;
   end;
Wenn ich dann später ConnCompo.Active auf True setze, erstellt diese sich einen eigenen Thread, welcher aber entweder irgendwie Suspended ist oder aber auf meine Ereignisse nicht reagiert...
Bin gerade am verzweifeln, da ich irgendwie keinen Ansatzpunkt zum debuggen finde :(

Hat da jemand Erfahrung mit bzw. hatte schon mal das gleiche Problem und konnte es lösen ?

Chendrak

Kamil 15. Jan 2004 18:50

Re: Problem mit ClientSocket + MultiThreading
 
Wie sieht der Code in deiner Execute Methode aus?
ClientSocket in einem Thread sollte den ctBlocking Mode verwenden. Funktioniert dann allerdings ohne Ereignisse.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz