bah perchè per inviare dati tramite socket ho sempre pensato che si usassero send e recv. C'è una soluzione migliore?

Ad ogni modo correggimi se sbaglio: la recv riceve un numero di byte non dipendente direttamente dal numero totale di byte inviati mediante un unica send; però siamo sicuri che il numero di byte ricevuti non eccede mai la dimensione indicata dal terzo parametro.

Quindi se io faccio:

Codice PHP:
recv (s,vettore,8192,0); 
la recv potrà ricevere 180, 2000, 8192 ma non 10500 byte giusto?

facendo più recv però io sono sicuro al 100% che i dati arriveranno comunque tutti e in ordine corretto?

Tornando invece al mio esempio io posso fare una cosa del genere?

Codice Invio Dati
Codice PHP:
send(s,vettore_grande,1000000,0); 
Codice Ricezione Dati
Codice PHP:
long int conta 0;
int ric;

while(
conta<1000000){
 
ric recv(s,(char *)&vettore_grande[conta],1000000,0);
 
conta += ric;

Grazie