No lo he probado, pero te comento lo que creo que estoy viendo:
Código C:
Ver originalint bytesR
= fread (buf1
, sizeof(char), sizeof(buf1
), pFichero
); ...
send(s2
, buf1
, strlen(buf1
), 0);
En sta linea estas leyendo 512 bloques (sizeof(buf1)) de 1 byte (sizeof(char)), es decir que le dices que te cargue 512 bytes en buf1; el problema es que el stream de lectura no se imagina que dos lineas despues vas a usar strlen(buf1) para saber la longitud de los datos y no te añade un nulo final, dicho de otra forma, strlen se basa en incrementar un contador desde el primer caracter puntero (buf1[0]) hasta que encuentre un final de cadena ('\0'), si lees 512 bytes y ninguno es un final de cadena el strlen te dará un resultado incorrecto. Prueba a hacer el send con:
De esta forma te aseguras que envias el nº de datos leidos en el ciclo correspondiente, ademas te sirve no solo para enviar archivos de texto (nota que cuando quieras enviar una imagen no podras usar funciones de texto).
Saludos
vosk