Seite 1 von 1

File Transfer mit Socket

Verfasst: Sa 13. Jan 2018, 16:17
von XYGS
Hallo zusammen,

mein Chat-Programm funktioniert bereits ganz gut (auch mit AES-Verschlüsselung). Jetzt versuche ich zusätzlich das Übertragen von Dateien möglich zu machen. Das funktioniert mit kleinen Dateien. Von einer MP3-Datei (Größe etwa 4 MB) wurden jedoch nur etwa 300 000 Bytes übertragen. Ich verwende
write und read zum Übertragen.

Code: Alles auswählen

Write #thisSocket, Datei, Len(Datei)
         Read #thisSocket, Datei, Len(Datei)
Muss ich große Dateien Blockweise übertragen? Oder funktionieren Write und Read nicht mit großen Dateien?
Vielen Dank für eure Hilfe

XYGS

Re: File Transfer mit Socket

Verfasst: Mo 15. Jan 2018, 22:00
von SommerWin
Hallo,
ich glaube das hat irgend was mit dem Puffer zu tun.
Hatte ein ähnliches Problem bei der Datenübertragung zu meinem Printserver, da wurde auch nur ein kleiner Teil übertragen und der Rest verschluckt.
Vielleicht kann man den Client (Empfänger) so umschreiben, dass er solange Daten empfängt bis ein EOF kommt.

Schöne Grüsse Kurt

Re: File Transfer mit Socket

Verfasst: Di 16. Jan 2018, 20:38
von XYGS
Ich teste gerade die Dateiübertragung mit Blöcken. Ich habe mein Clientprogramm jetzt so umgeschrieben, dass man die Blockgröße frei wählen kann. Außerdem kann man eingeben, wie lange wait nach jedem read und write warten soll. Das war teilweise erfolgreich. Auf Flush kann man sich wohl auch nicht verlassen. Deshalb werde ich mein Programm noch mal ändern. Für jeden empfangenen Block soll überprüft werden, ob die Länge stimmt. Wenn ein Block zu klein ist, muß das Programm warten. Vielleicht ist das die Lösung. Wenn ein Block zu gross ist, dann wird es kompliziert,

Re: File Transfer mit Socket

Verfasst: Di 16. Jan 2018, 23:18
von SommerWin
Ich glaub einfacher und sicherer wäre für jeden Datenblock eine Prüfsumme bilden und diese auf der Clientseite überprüfen.
So kann man auch sicher sein, dass die Daten nicht nur von der Länge stimmen sondern auch korrekt übertragen wurden.