Malek schrieb:
Ist das erste mal, dass ich mich mit netzwekprogrammierung auseinandergesetzt habe, aber ist nicht der einzige unterschied zwischen UDP und TCP, dass bei TCP die Daten "überwacht" werden mit checksums usw.?
Nicht ganz. Bei TCP besteht im gegensatz zu UDP ein reiner Datenstream. Wenn du also 2 mal den String "hallo" sendest, bekommt dein Gegenüber (bei einem Aufruf von recv()) "hallohallo". Dein Server übermittelt beim senden einer Datei anscheinend erst die Dateigröße und direkt danach die rohen Daten. Wenn du nun im Client aus dem TCP-Buffer liest, ist es gut möglich, dass Dateigröße und Daten zusammenhängen.
Um das Problem zu beheben, musst du jedes Paket voneinander trennen können.