У мене є кілька запитань щодо бібліотеки сокетів у C. Ось фрагмент коду, на який я звернуся у своїх запитаннях.
char recv_buffer[3000];
recv(socket, recv_buffer, 3000, 0);
- Як вирішити, наскільки великим зробити recv_buffer? Я використовую 3000, але це довільно.
- що станеться, якщо
recv()
отримає пакет, більший за мій буфер? - як я можу дізнатися, чи отримав я все повідомлення без повторного виклику recv і чи повинен він чекати вічно, коли нічого не буде отримано?
- чи є спосіб зробити так, щоб у буфера не було фіксованої кількості місця, щоб я міг продовжувати додавати його, не боячись не вистачити місця? можливо, використовуючи
strcat
для об'єднання останньоїrecv()
відповіді на буфер?
Я знаю, що це багато питань в одному, але я дуже вдячний за будь-які відповіді.