D
Gen.d.Pz.Tr.Seb schrieb:
Aber hat ReceiveBuf mit einem Speicherleck zu tun??
Nichts, das ist mir nur so nebenbei aufgefallen. ReceiveBuf gibt Dir die Anzahl der Bytes zurück, die tatsächlich in den Puffer geschrieben wurden. Und nur dieses Anzahl darst Du auch in den FileStream schreiben.
Angenommen, Deine Puffergröße ist 10 und die Größe Deiner Datei ist 25. Dann werden im Normalfall zuerst 2 Stücke von 10 Byte übertragen. Beim letzten ReceiveBuf werden aber nur die restlichen 5 übertragen. An den FileStream übergibst Du aber immer 10. Die letzten 5 Bytes in Deinem Puffer sind in diesem Fall undefniert und es landet Müll in Deiner Zieldatei.
Aber es kann Dir im Grunde jedesmal passieren, daß ReceiveBuf eine Anzahl Bytes zurückgibt, die ungleich Deiner Puffer-Größe ist - nicht nur beim letzten Aufruf. Also:
int readBytes = Socket->ReceiveBuf(Buffer, bufsize);
fss->Write(Buffer, readBytes);