?
Dein Protokoll mit den Datenpäckchen und der Empfangsquittung verstehe ich nicht: Mit send kopierst du deine Daten in socketinterne Puffer. Wie und in welcher Größe die Daten über dein Netzwerk gesendet werden, ist Sache des Betriebssystems. D.h. deine Daten können mit ganz anderer Päckchengröße auf die Reise gehen und beim Empfänger in den socketinternen Empfangspuffern landen. Bsp.: Du kopierst 2k mit send. Übers Netz gehen die Daten aber in 1k-Blöcken. Auf der Empfängerseite liest du jetzt mit recv einen 1k-Block, den du dann quittierst. Aber eigentlich darfst du erst nach 2k quittieren. Du mußt also auf der Empfängerseite solange recv ausführen, bis du deinen 2k-Block zusammenhast.
Wenn ich dich richtig verstanden habe, hast du schon soetwas wie ein Protokoll: Du unterscheidest zwischen Übermittlung der Dateigröße und dem Senden der Daten selbst. Warum kopierst du dann deine zu sendende Datei (mit send) nicht ohne Quittierung der einzelnen Datenpäckchen, und führst auf der Empfängerseite solange recv aus, bis du x Bytes empfangen hast (x=Dateigröße)?
Ansonsten könntest du mit einem Dateibetrachter die Inhalte der Dateien auf dem Sende- und auf dem Empfangscomputer vergleichen, um herauszubekommen, wo die Unterschiede sind.
Rob'