Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TClientSocket Problem! (https://www.delphipraxis.net/62933-tclientsocket-problem.html)

ScorpionKing 11. Feb 2006 17:32


TClientSocket Problem!
 
Hi Leute,
ich habe ein Problem mit dem TClientSocket. Ich habe eine Prozedur, in der Mit SendText etwas versendet wird, leider kommt dann das, was der Server antwortet nur in der OnRead-Funktion an. Ich möchte aber gleich in der Prozedur darauf zurückgreifen, was der Server schreibt. Bsp:

Delphi-Quellcode:
client.SendText('hallo');
str := client.Read(); // ??
Wie ist das möglich?

MfG, Scorpionking!

PierreB 12. Feb 2006 07:29

Re: TClientSocket Problem!
 
Zitat:

Ich möchte aber gleich in der Prozedur darauf zurückgreifen, was der Server schreibt.
Warum ? Arbeite doch einfach in der dafür vorgesehenden OnRead-Prozedur damit. Sollte es nämlich mal zu Netzwerkproblemen kommen und der Server nicht gleich etwas zurücksenden kann, wird der Text vermutlich nicht vor der Abarbeitung der Prozedur ankommen.

Der_Unwissende 12. Feb 2006 11:00

Re: TClientSocket Problem!
 
Hi,
ich würde dich auch gerne nochmal fragen, warum du das so brauchst.
Wenn ich mich nicht ganz irre, kannst du mit einem blockierenden Zugriff Synchronität erreichen, aber damit würdest du halt (wie der Name doch verrät) die restlichen Prozesse blockieren. Wenn du das Problem umgehen willst, müsstest du mit Threads anfangen und nicht-sequentielle Programmierung ist ein Komplex der für sich steht.
Die Frage ist halt echt, ob es nötig ist in deinem Fall. Imho wäre ein zustandsfreies Protokoll wie TCP dann einfach ungeeignet. Dieses kann dir keine Verbindung garantieren, du weißt also nicht, wann und in welcher Reihenfolge dein Packete ihren Empfänger erreichen. Natürlich gilt für die Antworten genau das Selbe. Du weißt nicht mal, ob der Server nicht zwischen dem Empfang deiner Nachricht und dem Beantworten noch existiert. Wenn der sich spontan selbst sprengt, von Außerirdischen entführt wird oder einfach abstürzt, dann hättest du schon das Problem, dass du ewig wartest (und nie eine Antwort bekommst).
Sinnvoller ist, dass du auf das entsprechende Event wartest, aber eben mit einem Timeout, dass du groß genug wählst (der Server braucht ja auch mal ein paar ms).

Gruß Der Unwissende


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