2011-01-21 63 views
1

在C++中使用boost :: asio,我試圖確定在我的程序中加密數據包的最佳方式。我想通過類型號自己定義數據包,每個數據包都有不同的固定數據包大小。系統讀取標題(數據列表的類型和數量)並創建適當的結構來接收數據,然後根據收到的數據作出反應。高效的數據包類型/傳輸協議

但是,當我看着這種方法時,我想知道是否有一種更簡單的方法來實現這一點,而不會犧牲效率。

這些數據包將通過TCP在不同的應用程序之間發送。理想情況下,我瞄準兩個應用盡可能使用帶寬和CPU,同時儘可能簡單地進行修改。有什麼建議麼?

+0

我刪除了`packet`和`packets`標籤並添加了`tcp`。 – 2011-01-21 20:50:36

回答

1

TCP使用的數據,而不是數據包。我強烈建議將您的數據傳輸視爲一串數據而不是數據包序列。這將使其更容易抽象到您的代碼中。看看Boost.Serialization或Google Protocol Buffers

Boost.Asio有SSL加密capabilities,所以加密數據流很簡單。它還有一個使用序列化的example

0

您考慮過google protobufs嗎?儘管它實際上並沒有進行加密(你必須親自這樣做),但它確實提供了一種對結構化數據進行編碼的方法,使您可以高效地通過線路發送它。此外,還有很多語言綁定(C++,Java和Python)。