我想使用boost序列化來使用套接字通過網絡發送結構。我看了他們的教程(http://www.boost.org/doc/libs/1_60_0/libs/serialization/doc/index.html),但它只顯示保存並加載到文件。套接字的提升序列化
我修改我的結構,包括序列化()函數和使用教程與我的套接字文件使用相同的技術嘗試,但沒有運氣:
#include <boost/archive/binary_oarchive.hpp>
#include <boost/archive/binary_iarchive.hpp>
int sock = socket()...
boost::archive::binary_oarchive oa(sock);
oa << mystruct;
error: no matching function for call to ‘boost::archive::binary_oarchive::binary_oarchive(int&)’
因此很明顯,它不能用套接字這種方式工作。我用Google搜索,發現這個例子人們引用: http://www.boost.org/doc/libs/1_38_0/doc/html/boost_asio/example/serialization/server.cpp
但是,如果你看一下在這個例子代碼中的註釋:
// client. The connection::async_write() function will automatically
// serialize the data structure for us.
好了,我不想ASIO使用任何東西。我只想序列化數據(使用boost序列化),並通過標準套接字發送數據。
庫不是以這種方式使用的嗎?我如何使用標準套接字(不帶asio)的boost序列化?
烏夫,我認爲你有一個巨大的概念混亂。據我所知,你打算通過網絡發送文件,不是嗎?所以,你應該首先讀取文件並使用它的流發送字節與套接字。將套接字描述符傳遞給binary_archive的構造函數沒有任何意義。 – perencia
我在內存中有一個結構,我需要通過電線發送字節。我不能只發送&myStruct,sizeof(mystruct),因爲結構包含指針。我認爲在這種情況下序列化是正常的。 – James