[英]How to transfer serialized data to the server and deserelize it
我用enet庫寫了客戶端和服務器端的代碼,也決定用boost庫來序列化數據。 我使用類似這段代碼的東西來發送數據並序列化它
char message_data[80] = "somedata";
std::stringstream ss;
boost::archive::binary_oarchive oa{ ss };
oa << message_data;
SendPacket(peer, ss.str());
以及類似這樣的代碼,用於獲取數據並對其進行反序列化
std::string deser_data;
std::string some_data = (char*)event.packet->data;
std::stringstream ss(some_data);
boost::archive::binary_iarchive ia{ ss };
ia >> deser_data;
但是這段代碼不起作用,我認為是由於錯誤使用了stringstream,但這並不准確
您是否有某些原因要使用二進制(不可移植、不容忍更改)表示? JSON 已經有點標准了。 是因為它可能...
我會添加一些調試。 你寫的是多長? 你讀的是多長? 如果您轉儲緩沖區,它們在客戶端和服務器上是否相同?
如果您全部內聯(不涉及網絡),代碼是否有效? 也就是說,你能不能寫一個單元測試來做客戶端和服務器端,你構造一個object,序列化它,反序列化成另一個object,然后比較它們?
我會從那開始。
抱歉,這不是一個正確的答案,但是對於簡單的評論來說太長了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.