我需要在C++中實現一個簡單的網絡上的交互,我一直在想是否有庫已經這樣做。我的協議基本上發送消息並接收響應。每條消息只是一組基本數據類型的3-4個值。我想找到一個可以執行下列一項或多項操作的庫(或多個庫):尋找一個簡單的協議實現庫
- 將值序列化爲高效的字節數組(我無法使用基於文本的序列化)。
- 發送消息並等待結果(它可以鎖定或異步接收響應,我不在乎)。
- 它必須能夠關聯發送的消息和響應。
理想我想能寫這樣的事:那cool_library ::發送返回true時沒有成功發送的消息,但
// On the sending side
bool send(const string& str, int x, char y)
{
Message msg;
msg << str << x << y;
// Lock until the response arrives
return cool_library::send(address, msg);
}
// On the receiving side
bool receive(Message& msg)
{
string str;
int x;
char y;
msg >> str;
msg >> x;
msg >> y;
if (some conditions...)
return true; // the message was handled successfully
else
return false;
}
時候要注意對方的反應與成功結果。所有這些冗長的解釋只是爲了表明我需要一個簡單的功能。沒有什麼花哨。我甚至可以自己發送和接收緩衝區,但我需要一些可以將消息與響應關聯的東西。我不想去參加RPC,因爲在我看來這是一種矯枉過正的行爲。
謝謝。
確實看起來像一個很好的序列化解決方案。但是你知道一些可以爲我管理消息生命週期的東西嗎?諸如消息響應,重試可能? – FireAphis 2010-01-21 11:57:08
另外,您如何看待boost序列化庫? – FireAphis 2010-01-21 11:58:03
從未使用過boost序列化,但是如果你想要一些處理網絡資料並增加更多可靠性(通過TCP)的東西,它不會那麼便宜,也許你應該尋找更完整的框架。 – 2010-01-21 12:08:28