gpt4 book ai didi

c++ - Microsoft C++ 异常:内存位置的 boost::archive::archive_exception(通过客户端服务器 Boost Udp 解析 vector )

转载 作者:搜寻专家 更新时间:2023-10-31 00:52:49 24 4
gpt4 key购买 nike

exception: boost::archive::archive_exception at memory location

我发现了这个但没有用,因为他正在为文件做而我只想为 vector 做。

问题:我在服务器端对 vector 进行了序列化,然后解析到客户端,然后我在那里进行反序列化。所以 1/2 记录一切正常。

但是如果我插入超过 2 条记录并通过 vector 解析它,它会在我反序列化数据的客户端给我这个错误:Microsoft C++ 异常:内存位置的 boost::archive::archive_exception

这是我的代码:

服务器端:

通过将 Vector 作为输入来序列化数据

//I think these headers are enough !!!

#include <boost/archive/text_iarchive.hpp>
#include <boost/archive/text_oarchive.hpp>
#include<boost/serialization/vector.hpp>
#include<boost/serialization/map.hpp>

template<class input>
void UdpServer::serializeData(input &vector) { // Here i use vector in parameter
std::ostringstream archive_stream;
boost::archive::text_oarchive archive(archive_stream);
archive << vector;
sendMessageToClients(archive_stream.str());//sending to client
}

我收到错误的客户端,

#include <boost/archive/text_iarchive.hpp>
#include <boost/archive/text_oarchive.hpp>
#include<boost/serialization/vector.hpp>
#include<boost/serialization/map.hpp>

//this is what i received from the server
size_t const len = m_socket.receive_from(
boost::asio::buffer(recv_buf), m_sender_endpoint);

std::string const received_message(recv_buf.data(), len);

std::string archive_data(received_message);// receive from server
std::istringstream archive_stream(archive_data);
boost::archive::text_iarchive archive(archive_stream);
archive >> map;
displayCarData(map); //i'm passing this to function for printing the values

我尝试添加 Boost io 二进制库,但错误是: C++超出范围的内存位置 //这是我使用 io 二进制库的尝试

 std::string archive_data(received_message);
std::istringstream archive_stream(archive_data);
boost::archive::text_iarchive archive(archive_stream, boost::io::binary);
archive >> map;
displayCarData(map);

如有任何帮助,我们将不胜感激

提前致谢

最佳答案

//this is what i received from the server
size_t const len = m_socket.receive_from(
boost::asio::buffer(recv_buf,1024), m_sender_endpoint);

我想你必须给出尺寸

 boost::asio::buffer(recv_buf,1024), m_sender_endpoint);

在这一行中,也适用于服务器端。

关于c++ - Microsoft C++ 异常:内存位置的 boost::archive::archive_exception(通过客户端服务器 Boost Udp 解析 vector ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50644920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com