2011-07-18 76 views
0

我試圖從一個「服務器」向「客戶端」發送1kb的數據,但我無法做到正確。 我需要做的事情有: 1)需要使用boost-asio套接字傳輸數據 2)需要序列化一個我創建的類型(數據包),將包含數據作爲字符串或字符*使用boost序列化通過boost-asio套接字連接發送序列化類型

這裏是正在發生的事情:

首先,我得到的數據1KB從服務器上的一個示例文本文件。我得到它並將其放入我創建的數據包類型中。我已經在數據包中定義了數據字段來將這些數據保存爲std :: string。 (我嘗試過char *,但它效果不佳 - 請參閱下一段)。

第二我用boost text_oarchive序列化它。如果它只包含一個字符串,我沒有任何問題序列化數據包類型,但我真正想要的是一種將數據類型作爲字符數組序列化的方式(以便它可以更好地與下面的套接字配合使用)

第三,我通過boost asio套接字發送它。在這裏,我遇到了一個問題,因爲我找不到通過套接字連接發送std :: string的方法。我在例子和文檔中看到的所有東西都需要使用某種類型的char *而不是字符串的緩衝區。

它只是一個頭痛。你能幫我嗎?

+0

無法回答沒有代碼,請編輯您的問題,包括您已完成的代碼。 –

回答

0

我看到的一切作爲實例和文檔中使用某些類型char *,而不是一個字符串,需要一個緩衝

這是正確的,儘管它很簡單使用Boost.Serialization做, Boost.Asio的。您可以使用text_oarchive序列化爲boost::asio::streambuf,然後使用套接字發送生成的流緩衝區內容。

查看此questionmy answer以獲得更完整的示例。

相關問題