Вы должны отправить содержимое ostringstream, т.е. строку, которая содержит сериализованный Note
.Теперь вы отправляете байты экземпляра text_oarchive
, что для меня не имеет смысла.
Может выглядеть так:
boost::archive::text_oarchive oa(oss);
oa << note;
cout << oss.str(); // HERE you get some string which represents serialized Note
// and content of this string should be sent
send_(socket_, oss.str().c_str(), oss.str().size());
^^^ content ^^^ size of content
Ваша функция send_
не принимает параметр размера?Интересно, что для меня этот параметр должен знать, сколько байтов должно быть передано.
Относительно стороны клиента:
// [1]
boost::asio::read(socket, receive_buffer, boost::asio::transfer_all(), error);
, поскольку вы не предоставили MCVE, я предполагаю, что в[1] Строка, которую вы создаете receive_buffer
как некий dynamic_buffer , если нет, и это просто пустая строка, вы будете читать пустую строку.Так что десериализация не сработает.