Einzelnen Beitrag anzeigen

Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Dateien senden und empfangen

  Alt 15. Nov 2007, 22:24
1. Delphi-Referenz durchsuchenSendStream() siehe Hilfe: Du darfst den Stream nicht freigeben. SendStream übernimmt diesen und gibt ihn frei, wenn er ihn versendet hat (was er im Hintergrund erledigt)
2. if socket.ReceiveLength <= sizeof(int64) then Ach, wenn du also noch keine 8 Bytes für den Int64 empfangen hast, also z.B. nur ein Byte, dann liest du den Int64 auch schon aus? Warum nimmst du dann einen Int64, wenn doch anscheinend auch schon alles in 0 Bytes oder vllt. einem Byte hinein passt?
3. Du öffnest im OnClientRead ständig den FileStream mit fmCreate. Wenn du schon etwas in die Datei reingeschrieben hast, dann wird dies überschrieben.
4. Beachte: Du wirst öfters im OnClientRead aufgerufen bis du die Datei komplett empfangen hast. Die Daten kommen häppchenweise an (wie du sie losschickst ist egal, ob als Stream oder auch irgendwie aufgeteilt). Von daher solltest du nicht mitten im Datenstrom nochmals einen Int64 auslesen oder die Datei erneut öffnen und somit überschreiben.

Ich denke mal mit den Hinweisen bekommst du eine lauffähige Version hin...
  Mit Zitat antworten Zitat