Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi [Indy9]: TIdTCPServer/-Client: Client freeze (Timer+ReadLn) (https://www.delphipraxis.net/90345-%5Bindy9%5D-tidtcpserver-client-client-freeze-timer-readln.html)

zecke 15. Apr 2007 18:28


[Indy9]: TIdTCPServer/-Client: Client freeze (Timer+ReadLn)
 
:hi:

Wiedermal geht es um die Indys, genauer um die Indy 9 Komponenten TIdTCPServer und TIdTCPClient. Ich wollte mir mal ein wenig anschauen, wie ich es hinbekomme, Nachrichten zu versenden.
Ich schaute mir also den Demo-Chat von indyprojects.org an und naja, als Anfänger scheint der mir etwas ungeeignet ;)

Ich habe es inzwischen hinbekommen vom Client eine Nachricht zum Server zu schicken, kein Problem soweit. Jetzt bekam ich aber (wie die DP-Suche mir zeigte war ich nicht der Einzige :mrgreen:) zu dem Problem, dass ich beim Senden (String) von Server zum Client (später mal mehrere Clients) einen Timer zum abfragen benutzen muss, weil der Client kein OnExecute hat. Der Client pennt quasi so vor sich hin, bis man ihn an der Schulter anstuppst.

Ich habe also einen Timer draufgeklatscht und die ReadLn-Abfrage reingepackt. Allerdings friert mir jetzt der Client nach der 1. Abfrage, wenn der Timer erneut ausgeführt wird, immer ein. Ich konnte darüber nichts finden, gehe aber davon aus, dass es daran liegt, das keine neuen Nachrichten vorhanden sind, die der Client empfangen könnte und somit ReadLn versucht aber nichts bekommt.

Wenn meine Vermutung richtig ist, wie kann ich denn prüfen, ob eine neue Nachricht vom Server gesendet wurde und nur in dem Fall das ReadLn ausführen?



Ich danke im voraus

t0b4d 15. Apr 2007 21:22

Re: [Indy9]: TIdTCPServer/-Client: Client freeze (Timer+Read
 
ich hab ein ähnliches Problem, deins wird aber soweit ich weis auf dieser Seite geklärt!

http://delphi.about.com/od/interneti.../aa012004a.htm

richie 15. Apr 2007 21:33

Re: [Indy9]: TIdTCPServer/-Client: Client freeze (Timer+Read
 
Zitat:

Wenn meine Vermutung richtig ist, wie kann ich denn prüfen, ob eine neue Nachricht vom Server gesendet wurde und nur in dem Fall das ReadLn ausführen?
gar nicht.

Du kannst bei Readln als Parameter ein Timeout angeben. D.h., nach dem angegeben Zeiträum bricht der Client das Readln ab. Da nimmst du dann ein sehr kleines Intervall, z.B. 5 Millisekunden.

zecke 15. Apr 2007 22:46

Re: [Indy9]: TIdTCPServer/-Client: Client freeze (Timer+Read
 
Danke richie... Irgendwie muss ich meine Brille putzen (Hint bei ReadLn...) :mrgreen:
:thumb: friert nicht mehr ein, aber ich habe jetzt andere Probleme, aber jetzt putze ich die Brille und schaue mal nach :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:36 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