Beh, non c'è alcuna garanzia che non troverai FFD9 all'interno di un'immagine jpeg. Il modo migliore per trovare la fine di un'immagine jpeg è analizzarlo. Ogni marcatore, ad eccezione di FFD0 a FFD9 e FF01 (riservato), viene immediatamente seguito da un identificatore di lunghezza che ti darà la lunghezza di quel segmento di marcatore, incluso l'identificatore di lunghezza ma non il marcatore. FF00 non è un marker, ma per i tuoi scopi puoi trattarlo come marker senza un identificatore di lunghezza.
Lo specificatore di lunghezza è lungo due byte ed è big endian. Quindi, quello che farai è cercare FF, e se il seguente byte non è uno di 0x00, 0x01 o 0xD0-0xD8, leggi l'identificatore di lunghezza e salta avanti nel flusso finché l'identificatore di lunghezza dice meno due byte.
Inoltre, ogni indicatore può essere riempito all'inizio con qualsiasi numero di FF.
Quando arrivi a FFD9 sei alla fine del flusso.
Ovviamente si può leggere il flusso parola per parola, cercando FF se si desidera una performance ma è lasciato come esercizio per il lettore. ;-)
"Invio" utilizzando quale protocollo? Il tuo protocollo non sa quando termina automaticamente un file? –
Perché non inviare preventivamente la lunghezza dell'immagine? – Kornel
Utilizzare un protocollo. –