Programa de transferencia de ficheros

Borja
16 de Mayo del 2003
Hola estoy haciendo un sistema cliente-servidor para la transferencia de ficheros. El problema me surge en el servidor (el que recoge el fichero)

char buff[TAM_BLOQUE];

int num_paq = ((finf->st_size)/TAM_BLOQUE+1;
// bueno en finf->st_size es el tamaño del
// fichero que estoy enviando (lo envio lo primero)

for (i=0; i<num_paquetes-1; i++)
// envio todos los bloques que se rellenaran (menos el ultimo)
{
recv(ssock,(char *)&buf,sizeof(buf),0);
fwrite(buf, sizeof(char), TAM_BLOQUE , fh);
}

recv(ssock,(char *)&buf,finf->st_size % TAM_BLOQUE,0);
fwrite( buf, sizeof(char), finf->st_size % TAM_BLOQUE, fh);


Bueno este es mi codigo, la comunicacion la hace bien y transfiere bien los bloques (he omitido toda la parte de inicializacion de sockets pero eso funciona) El bucle funciona bien pero sin embargo el ultimo bloque (que normalmente esta incompleto no me lo escribe bien, metiendome basura y quedando el fichero escrito siempre con tamaño mayor. Como podria hacerlo de otra forma.
Gracias

Tximis
16 de Mayo del 2003
Limpia el buffer en el bucle for() con memset(buffer, 0, sizeof(buffer)); y luego mandas al socket el numero de bytes recibidos, no la longitud total del buffer, para ello usas strlen(buffer);

--
Tximis