Io non ho letto il codice che hai fornito quindi è possibile che quello che ho scritto in questa risp sia la stessa cosa che fa il tuo programma.
Secondo me dovresti creare due applicazioni, una che riceve e una che invia.
Quando vuoi inviare un file, lo apri in binario con l'appliccazione che invia e mandi una quantità fissa di dati gestendola con una variabile integer (valore consigliato 8191). Tu mandi i dati col winsock e dall'altra parte il ricevente li infila in un nuovo file (aperto in binario). Per controllare che i dati arrivino correttamente, fai in maniera che il ricevente, quando gli arriva il quanto di dati, invii un messaggio di conferma. Dovrebbe funzionare.....![]()