- Am Ende poste ich ein "finish" an das Script und das Script setzt (wenn die Chunks durchgehend sind) die File dann wieder zusammen
Vorschlag:
Am Anfang Dateiname, Länge, Chunk-Länge und Prüfsumme der Datei übertragen.
Der Server kann aufgrund dieser Informationen prüfen, ob für diese Datei schon eine Teilübertragung stattgefunden hat.
Sollte sich die gemerkte Prüfsumme der Datei unterscheiden, wurde die Datei auf dem Client inzwischen verändert und muss komplett neu übertragen werden.
Server legt die Datei sofort in der Gesamtlänge mit temporären Namen an (Speicher ist reserviert, vermindert Fragmentierung).
Server teilt mit welche Chunks noch benötigt werden.
Client überträgt Chunks, vieleicht sogar mehrere parallel (spart die Latenzzeit).
Server schreibt jeden Chunk direkt in die Datei ab der Position, an die der Chunk gehört.
Streicht die übertragenen Chunk aus seiner Liste.
Client meldet Abschluss.
Server prüft ob noch Chunk fehlen > Fehler Rückmeldung > fehlende Chunk übertragen
Server prüft CRC > Fehler Rückmeldung > Abbruch
Server benennt die temporäre Datei um und gibt die nur für die Übertragung erforderlichen Daten frei.
Es sollte auch ein Mechanismus existieren, die Übertragungen vom Client aus endgültig abzubrechen.