Auf den ersten Blick würde ich sagen, dass du nach dem Schreiben in den Stream, diesen auch wieder auf den Anfang zurücksetzen musst:
Delphi-Quellcode:
{...}
Stream.Write(Len, SizeOf(Len));
Stream.Write(PChar(Data)^, Len);
Stream.Seek(0,0);
AContext.Connection.IOHandler.Write(Stream);