размер — C ++: BOOST-ASIO async_read_some не возвращает количество байтов пакета?

Я попытался использовать следующий код, чтобы прочитать количество доступных байтов в сокете (на стороне сервера) и переменную packet_bytes ничего не делает Я ожидал, что число байтов, используемых пакетом, будет считано в packet_bytes но это не похоже на работу.

std::size_t packet_bytes = 0;

socket_.async_read_some(boost::asio::buffer(data_, max_length),
boost::bind(&session::handle_read, this,
boost::asio::placeholders::error,
packet_bytes));

Я тоже пробовал std::size_t packet_bytes = socket_.available(); и это тоже ничего не вернуло. Это весь код.

0

Решение

packet_bytes аргумент в bind Вызов также должен быть заполнителем:

socket_.async_read_some(boost::asio::buffer(data_, max_length),
boost::bind(&session::handle_read, this,
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred));

Тогда в вашей функции-обработчике этим аргументом будет количество прочитанных байтов.

Смотрите, например пример в руководство.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]