Функция async_receive
должна изменять содержимое буфера, но вы не можете изменить постоянный буфер.
Используйте mutable_buffer
вместо постоянного буфера.Вы можете найти некоторую информацию здесь
Вам нужно передать указатель и размер в изменяемый буфер:
std::vector<char> content_buffer(max_buffer_size);
... boost::asio::mutable_buffer(content.data(), content.size()) ...
Важно, чтобы вы объявили свой content_buffer
в глобальной области, потому что функция async_receive
обращается к асинхронному буферу.Если вы объявите свой буфер в функции, он выйдет из области видимости до получения данных.