scusa ma in base a cosa ritieni di non ricevere tutti i dati dell'immagine??
Ti faccio notare che nel caso dell'immagine stai ricevendo dati binari e non ascii... e che i dati binari possono anche contenere lo \0... e in C il null è il terminatore di stringa....
Se stampi una stringa binaria contenende zeri con printf la stampa si blocca non appena trovi un null....