1. El cliente pide la cantidad de trozos al servidor y el servidor le da una respuesta (Ej. 23).
2. De acuerdo a los trozos que tenga (necesita un mapa con los trozos completados) le pide un trozo X que en realidad es un numero del 0 al 22
Por su parte el cliente al recibir la peticion del trozo 6 lo unico que hace es;
1. Abre el archivo y realiza un "salto" hacia el trozo deseado
Seek(Trozo * TamañoDelTrozo), en tu ejemplo; _llseek(hFile, dwPiece * 1024 * 1024, FILE_BEGIN);
2. Lee un Trozo y lo envia