Hallo zusammen!
Ich benutze in meinem Client/Server-Projekt TIdTCPClient und TIdTCPServer, um Daten hin- und herzuschicken.
Folgendes funktioniert dabei wunderbar:
Client:
Delphi-Quellcode:
FTCPClient.IOHandler.Write(locSendStream);
locResponse := FTCPClient.IOHandler.ReadLn;
Server:
Delphi-Quellcode:
procedure TCPServerExecute(AContext: TIdContext);
[...]
AContext.Connection.IOHandler.ReadStream(locReceiveStream, AContext.Connection.IOHandler.InputBuffer.Size);
AContext.Connection.IOHandler.WriteLn('Welcome!');
Versuche ich aber als Antwort einen Stream zu versenden...
Client:
Delphi-Quellcode:
FTCPClient.IOHandler.Write(locSendStream);
FTCPClient.IOHandler.ReadStream(locReceiveStream, FTCPClient.IOHandler.InputBuffer.Size);
Server:
Delphi-Quellcode:
procedure TCPServerExecute(AContext: TIdContext);
[...]
AContext.Connection.IOHandler.ReadStream(locReceiveStream, AContext.Connection.IOHandler.InputBuffer.Size);
[...] //Verarbeite Stream, erstelle Antwort
AContext.Connection.IOHandler.Write(locSendStream);
...dann wird im Client ReadStream() bereits ausgeführt obwohl der Server noch nicht gesendet hat.
Sprich: Lese ich einen String wird gewartet, lese ich einen Stream nicht!
Was mache ich falsch? Hat jemand eine Idee?
MfG Dummbatz.