Предположим, Linux и UDP используются.
Страница из recvfrom говорит:
Прием звонков обычно возвращает все доступные данные вплоть до запрошенной суммы, вместо ожидания получения всей запрошенной суммы.
Если это так, то весьма вероятно, что можно вернуть частичные данные протокола прикладного уровня из сокета, даже если задано MAX_SIZE
.
Должен ли быть сделан последующий вызов recvfrom
?
В другом смысле также возможно иметь больше, чем мне нужно, например два UDP-пакета в буфере сокета. Если в этом случае вызывается recvfrom()
, вернет ли он их обоих (предположим, в MAX_SIZE
)?
Я полагаю, что в начале каждой UDP-сообщения UDP должна быть информация о размере уровня протокола приложения, чтобы он не испортился.