Programa de transferencia de ficheros
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
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
