Tengo algunas preguntas sobre la biblioteca de sockets en C. Aquí hay un fragmento de código al que me referiré en mis preguntas.
char recv_buffer[3000];
recv(socket, recv_buffer, 3000, 0);
- ¿Cómo decido qué tan grande hacer recv_buffer? Estoy usando 3000, pero es arbitrario.
- ¿Qué sucede si
recv()
recibo un paquete más grande que mi búfer? - ¿Cómo puedo saber si he recibido el mensaje completo sin volver a llamar a recv y esperarlo para siempre cuando no hay nada que recibir?
- ¿Hay alguna manera de hacer que un búfer no tenga una cantidad fija de espacio, de modo que pueda seguir agregándolo sin temor a quedarse sin espacio? tal vez usando
strcat
para concatenar la últimarecv()
respuesta al búfer?
Sé que son muchas preguntas en una, pero agradecería mucho cualquier respuesta.