Я просто создаю очень простой класс C++, который предоставляет мне несколько методов, таких как connect()
и read()
, вместо того, чтобы разоблачать все вызовы сокета Boost.Asio.Прочитайте только нужное количество байтов с помощью Boost.Asio
Прямо сейчас, я пытаюсь выяснить, как создать метод, который считывает только нужное количество байт:
SocketClient::read(int bytes, char* data); //reads desired amount of bytes and puts them in data, size of data>bytes!
К сожалению, я не нашел read_byte
функцию в Boost.Asio. Я не хочу отбрасывать байты, которые были получены, но еще не прочитаны.
Из документации, это не очевидно, что происходит с данными, которые я не читал. Мне нужно ** читать число байтов. Точное число. Не более. Не менее. Если есть меньше, функция блокируется. ** Что происходит, когда есть больше, чем мне нужно? ** –
Почему вы не можете просто использовать собственный механизм буферизации? Читайте, что доступно, и если доступно количество байтов в байтах $, возвращайте это количество байтов, иначе читайте больше. – EHuhtala