Bei Streams die größer sind als der Übertragungspuffer, gibt es kein "Size", bzw. die ist -1, und damit kommen viele Codes nicht klar. (z.B. fast alle LoadFromStream, Stream.CopyTo usw.)
Bei uns hatte ich nach mehreren solcher Problemchen die DataSnap-Klassen abgeleitet und kopiere nach der Übertragung alles in einen MemoryStream, welchen ich dann zurück geben, anstatt des Streams vom DataSnap.
DataSnap-Streams kleiner 32 KB (glaub ich) sind komplett übertragen und bei mehr Daten (mit Size=-1) wird erst beim Auslesen der Inhalt übertragen, also so lange Auslesen bis das Read 0 Bytes liefert.
@Sherlock: Ich hatte Anangs auch einen
TCP/
IP-Server (
Indy) parallel betrieben, bis wir das mit dem -1 endlich rausbekommen hatten. (nichtmal der Support von Embarcadero wusste es anfangs)