Il mio dubbio sta sulla readyRead(), lato client: una volta avvenuto l'evento, quando farò la read prenderò tutti i 360byte? o conviene leggere un byte la volta e inserirlo in un buffer(char[]), fermandomi quando raggiungo i 360byte letti?
Non c'è mai nessuna garanzia di quanti bytes leggerai ogni volta con:
read(int fd, void *buf, size_t count);
Ne leggerai al massimo "count".
Devi fare un loop fino a quando hai letto 360 bytes, ogni volta riarrangiando il secondo e terzo argomento,
Ponendo la variabile "n" a quanti bytes hai letto fino a questo momento, imposti
di modo da riempire buf alla posizione giusta (cambi l'indice) e impostando count a 360 - n.
Esempio:
codice:
char buf[360];
int n, len = 0;
for (n = 0; n < 360; n += len)
len = recv(fd, &buf[n], 360 - n);