Il perchè credo sia dovuto al fatto che tu scrivi sempre e comunque 1024 byte di dati ad ogni lettura, mentre dovresti scrivere solo quelli effettivamente letti.
Per far questo, dovresti tener conto del valore restituito dal metodo read() che indica esattamente il numero di byte letti e inviare questa informazione al ricevente (nel tuo caso il client, giusto?) in modo che anche lui sappia quanti byte deve effettivamente scrivere nel file.


Ciao.