Hi schwa226,
das sollte aber auch eleganter/kürzer gehen.
Wie schickst Du den Stream den beim Server zum Client ? Gestückelt oder in einem Stück ?
Meiner Meinung ist es am besten und einfachsten so:
Delphi-Quellcode:
Var ms : TMemoryStream;
begin
// ...
AContext.Connection.Socket.Write(ms,0,true); // <--- das true sorgt dafür das die Größe des Stream am Anfang geschrieben wird
// ...
Im Client würde ich dann wie folgt vorgehen :
Delphi-Quellcode:
Var ms : TMemoryStream;
begin
// ...
if not myTcpClient.Socket.InputBufferIsEmpty then
myTcpClient.Socket.ReadStream(ms); // = myTcpClient.Socket.ReadStream(ms, -1, false)
// When AByteCount contains the value -1, the amount of data to read from the IOHandler is determined either by reading the byte count from the IOHandler
// or by reading data until the connection is closed by the peer.
Das sollte absolut ausreichen, So funktioniert es auf jeden FAll bei in einigen Anwendungen
Greetz Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.