Я работаю на UDP-сервере, созданном с boost :: asio, и я начал с учебника , настроенного под мои нужды. Когда я вызываю socket.receive_from(boost::asio::buffer(buf), remote, 0, error);
, он заполняет мой буфер данными из пакета, но, если я правильно понимаю, он удаляет все данные, которые не помещаются в буфер. Последующие вызовы receive_from получат следующую доступную дейтаграмму, поэтому мне кажется, что произошла некоторая потеря данных даже без уведомления. Я неправильно это понимаю?
Я пытался многократно читать документацию boost :: asio, но мне не удалось найти подсказки о том, как я должен делать это правильно. Я хотел бы прочитать определенное количество данных, чтобы я мог их обработать; если чтение всей дейтаграммы - единственный способ, я могу справиться с этим, но тогда как я могу быть уверен, что не потеряю данные, которые получаю? Какой размер буфера я должен использовать, чтобы быть уверенным? Можно ли сказать, что мой буфер слишком мал и я теряю информацию?
Я должен предположить, что я, возможно, получаю огромные дейтаграммы.