Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Read bei TServerSocket geht nur einmal (https://www.delphipraxis.net/28352-read-bei-tserversocket-geht-nur-einmal.html)

easywk 23. Aug 2004 16:35


Read bei TServerSocket geht nur einmal
 
Hallo zusammen,

ich werde hier gleich raschelig. Möchte eine TCP-Verbindung aufbauen und haben erstmal zu Testzwecken ein kleinen Proggi gemacht. Das Serverproggi hat ein TServerSocket und wird schon zur Entwicklungszeit auf Active gesetzt. Einzige Ausführungzeile im OnClientRead:
Delphi-Quellcode:
Socket.SendText('angekommen');
Der Client hat ein TClientSocket und festen Host und festen Port. Er wird beim Programmstart geöffnet und beim Programmende geschlossen. Auf einem Button liegt das Kommando:
Delphi-Quellcode:
ClientSocket.SendText('hallo')
Zusätzlich gibt es für den Client noch ein OnRead:
Delphi-Quellcode:
MessageDlg(Socket.ReceiveText,mtInformation,[mbok],0);
Funktioniert genau 1x! Ich drücke den Button, bekomme die Meldung. Wenn ich den Button nochmal drücke passiert nichts mehr. Habe dann auf dem serverprogramm auf dem OnClientRead einen Breakpoint gesetzt. Beim ersten Mal nach dem Connect durch den Client kommt die Meldung beim Server an - das zweite Hallo läuft nicht mehr auf den Breakpoint.

Hat jemand eine Idee, was ich falsch mache?
cu easywk

Snoop007 23. Aug 2004 16:52

Re: Read bei TServerSocket geht nur einmal
 
hi,
weise einem string mal Socket.ReceiveText zu und arbeite dann weiter mit diesem string
dann würds auch gehen :)

easywk 23. Aug 2004 18:05

Re: Read bei TServerSocket geht nur einmal
 
Ja, das funzt. Danke. (auch wenn ich nicht wirklich verstehe, warum ich erst diese Zusweisung machen muss).

Muetze1 23. Aug 2004 19:19

Re: Read bei TServerSocket geht nur einmal
 
Moin!

Daran liegt es nicht. Dein ClientSocket.SendText() sendet diesen wieder an den Server und nicht an deinen Client. Also: Du sendest nur einmal was...

Und dann ist es so, das ReceiveText nach dem Aufruf den Buffer leer macht - weil woher sollte er denn wissen wie oft er aufgerufen wird bevor er neue Daten liefern soll?

MfG
Muetze1

Kalle_XXXX 11. Okt 2004 10:53

Re: Read bei TServerSocket geht nur einmal
 
Ich arbeite mit idTCPServer und idTCPClient. Bei mir klappt das ganze auch nur einmal.
Muss ich dann ein CleanWriteBuffer() auf mein Thread machen?


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