![]() |
ReadLn im Thread wird nicht ausgeführt
Hallo,
Ich habe ein Programm mit IdTCPCLient und eins mit IdTCPServer Der Client schickt über diesen Thread jede Sekunde etwas an den Server Nun habe ich am Server einen Button und bei Klick soll auch etwas an den Clienten geschickt werden. Nur muss ich ganz oft auf den button klicken und dann wird es vielleicht beim 10. mal oder so mal gesendet und empfangen. Thread.Execute:
Delphi-Quellcode:
IdTCPServer.Execute
procedure TMain.Execute;
begin while not Terminated do Begin S := FormatDateTime('hh:nn:ss', Time); hour1:=strtoint(copy(S, 1, 2)); min1:=strtoint(copy(S, 4, 2)); sek1:=strtoint(copy(S, 7, 2)); sekunden1:=hour1*3600+min1*60+sek1; time1:=Trunc(sekunden1-sTime); nTime:=timetostr(secondstotime(time1)); synchronize(Update); IdTCPClient.Host := GetIp(Host); IdTCPClient.Port := Port; try IdTCPClient.Connect(100); IdTCPClient.WriteLn(floattostr(time1)); status := IdTCPClient.ReadLn('', 5); synchronize(poststatus); IdTCPClient.Disconnect; except Synchronize(Soff); end; sleep(1000); end; end;
Delphi-Quellcode:
Könnt ihr mir ne bessere Methode nennen das zu verwirklichen?
procedure TForm1.IdTCPServer3Execute(AThread: TIdPeerThread);
begin TCP3:=AThread.Connection.ReadLn; AThread.Connection.WriteLn(Status3); label16.caption:=TimeToStr(secondstotime(strtoint(TCP3))); status3:=''; end; |
Re: ReadLn im Thread wird nicht ausgeführt
Welche Indy-Version ist das? Es sieht aus, wie die 9er Version aber sicher bin ich mir nicht :gruebel:
Ansonsten liegts wahrscheinlich daran:
Delphi-Quellcode:
Ein Timeout von 5 Millisekunden (?) könnte etwas zu kurz sein...status := IdTCPClient.ReadLn('', 5); |
Re: ReadLn im Thread wird nicht ausgeführt
ja ist die 9er...
wenn ich das von 5 hochsetze passiert auch bloß nichts oder der rest des programms wird nicht mehr ausgeführt ich habs schon mit zig Werten bis 10000 probiert nix war besser... kommt auf dasselbe hinaus |
Re: ReadLn im Thread wird nicht ausgeführt
Wie so oft hab ich selber das Problem gefunden^^
Ich hab das sleep(1000); raus gemacht und beim Connect von 100 auf 1000 hochgesetzt dann wartet er nicht mehr mit der schleife sondern während der Verbindung ;) |
Re: ReadLn im Thread wird nicht ausgeführt
eventuell war das Sleep garnichtmal sooo schlecht.
Wen die Verbindung gut/schnell ist, kann sich da ganz schö was an Traffic ansameln, wenn ununterbrochen was gesendet wird. |
Re: ReadLn im Thread wird nicht ausgeführt
hmm aber ReadLn funzt ja nur während des connects... und weil der server nicht immer Online ist würde der ander Code ja nicht ausgeführt werden bzw. sehr haken... oder eben Das ReadLn funzt nicht
|
Re: ReadLn im Thread wird nicht ausgeführt
Achja, nowas: Du musst nicht für jede Meldung den tcpclienet erstellen, was senden, wieder trennen & freigeben - du kannst einmal am Anfang verbinden und dann jede Sekunde was senden und dann irgendwann beenden. Du kannst ja mal probieren, ob das was ausmacht ;)
|
Re: ReadLn im Thread wird nicht ausgeführt
ne das geht eben nicht
Der Server ist ja nicht immer an! und er soll trotzdem weiterhin senden falls der Server mal wieder On kommt an einen Server der nicht vorhanden ist kann ich ja nicht connecten ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz