Ver Mensaje Individual
  #12 (permalink)  
Antiguo 30/08/2013, 15:33
vosk
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 12 años, 3 meses
Puntos: 83
Respuesta: Problema con cliente FTP en C

No lo he probado, pero te comento lo que creo que estoy viendo:

Código C:
Ver original
  1. int bytesR = fread (buf1, sizeof(char), sizeof(buf1), pFichero);
  2. ...
  3. 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:

Código C:
Ver original
  1. send(s2, buf1, bytesR, 0);

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