У меня есть несколько вопросов о библиотеке сокетов в C. Вот фрагмент кода, на который я буду ссылаться в своих вопросах.
char recv_buffer[3000];
recv(socket, recv_buffer, 3000, 0);
- Как мне решить, насколько большим сделать recv_buffer? Я использую 3000, но это произвольно.
- что произойдет, если
recv()
получит пакет больше моего буфера? - как я могу узнать, получил ли я все сообщение без повторного вызова recv, и заставить ли оно ждать вечно, когда нечего получать?
- Есть ли способ сделать буфер не имеющим фиксированного количества места, чтобы я мог продолжать добавлять к нему, не опасаясь нехватки места? может быть, использовать
strcat
для объединения последнегоrecv()
ответа в буфер?
Я знаю, что это много вопросов в одном, но я был бы очень признателен за любые ответы.