Poi quello che fai tu non é "attraversare" il file ma leggere il nº di bytes e scriverli sul socket.. Se vuoi fare una implementazione tua immagino che devi usare una fseek / lseek per spostare lo stream all'interno del file e leggere, copiare, scrivere a seconda di esso.. Pero come detto tu non fai questo..