Hallo zusammen!
Ich benutze in meinem Client/Server-Projekt TIdTCPClient und TIdTCPServer, um Daten hin- und herzuschicken.
Folgendes funktioniert dabei wunderbar:
Client
1: 2:
| FTCPClient.IOHandler.Write(locSendStream); locResponse := FTCPClient.IOHandler.ReadLn; |
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...
Client
1: 2:
| FTCPClient.IOHandler.Write(locSendStream); FTCPClient.IOHandler.ReadStream(locReceiveStream, FTCPClient.IOHandler.InputBuffer.Size); |
Server
1: 2: 3: 4: 5:
| procedure TCPServerExecute(AContext: TIdContext); [...] AContext.Connection.IOHandler.ReadStream(locReceiveStream, AContext.Connection.IOHandler.InputBuffer.Size); [...] 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
raziel: Code- durch Delphi-Tags ersetzt