La idea es que vos abris un archivo, lees un pedazo del archivo y lo mandas.
Tenes que almacenar ese puntero, stream o lo que fuera, de modo de poder volver a retomarlo cuando vuelvas a ver que el receptor este listo para seguir recibiendo. No lo cerras despues de haber leido esos x bytes, sino que el puntero queda disponible para una siguiente lectura.
Este funcionamiento idealmente es similar al de guardar, en donde mantenes el puntero a donde estas guardando, aunque siempre seria un append, por lo cual podrias haber cerrado el archivo sin problemas.
Es re choto, vas a ver que sale enseguida.
Saludos.