Autor Beitrag
Dummbatz
Hält's aus hier
Beiträge: 14

WinXP SP2
D2005
BeitragVerfasst: Di 02.05.06 20:24 
Hallo zusammen!

Ich benutze in meinem Client/Server-Projekt TIdTCPClient und TIdTCPServer, um Daten hin- und herzuschicken.

Folgendes funktioniert dabei wunderbar:
ausblenden Client
1:
2:
  FTCPClient.IOHandler.Write(locSendStream);
  locResponse := FTCPClient.IOHandler.ReadLn;

ausblenden Server
1:
2:
3:
4:
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...
ausblenden Client
1:
2:
  FTCPClient.IOHandler.Write(locSendStream);
  FTCPClient.IOHandler.ReadStream(locReceiveStream, FTCPClient.IOHandler.InputBuffer.Size);

ausblenden Server
1:
2:
3:
4:
5:
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.

Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt