Ho alcune domande sulla libreria socket in C. Ecco un frammento di codice a cui farò riferimento nelle mie domande.
char recv_buffer[3000];
recv(socket, recv_buffer, 3000, 0);
- Come faccio a decidere quanto è grande fare recv_buffer? Sto usando 3000, ma è arbitrario.
- cosa succede se
recv()
riceve un pacchetto più grande del mio buffer? - come posso sapere se ho ricevuto l'intero messaggio senza chiamare di nuovo recv e farlo attendere per sempre quando non c'è nulla da ricevere?
- c'è un modo in cui posso fare in modo che un buffer non abbia una quantità fissa di spazio, in modo da poter continuare ad aggiungerlo senza paura di rimanere senza spazio? forse usando
strcat
per concatenare l'ultimarecv()
risposta al buffer?
So che ci sono molte domande in una, ma apprezzerei molto qualsiasi risposta.