non credo ci sia scritto da qualche parte che i dati ti debbano arrivare tutti assieme in blocco, dipende da vari fattori oltre che dalla quantità dei dati. Da bytesTotal sai quanti te ne sono arrivati, se sai quanti te ne aspetti puoi sapere se sono tutti o meno, non devi cmq chiudere il socket altrimenti se te ne manda ancora il server di dati non li riceverai.