//cliente
//enviar nombre de archivo
recibir(nombreArchivo);
crearArchivo(nombreArchivo);
//recibir tamaño de archivo
recibir(tamano);
for(...,...,...)
{
//recibir tamano de bytesque se recibiran para el archivo
recibir(tamanobufferbytes);
//recibir el segmento de archivo
recibir(buffer);
//escribir un pedazo del archivo
fwrite(buffer, 512,1,archivo);
...
...
if (tamanobufferbytesAcumulado =tamano)
break;
}