[英]Best way of serializing/deserializing a simple protocol in C++
我想在Linux上使用C ++中的Berkeley套接字構建一個簡單的應用程序協議。 傳輸層應為UDP,協議將包含以下兩部分:
第一部分:
它是一個固定的部分,它是具有以下字段的協議Header:
1. int HeaderType
2. int TransactionID
3. unsigned char Source[4]
4. unsigned char Destination[4]
5. int numberoftlvs
第二部分
它將包含可變數量的TLV,每個TLV將包含以下字段:
1. int type
2. int length
3. unsigned char *data "Variable length"
我的問題是准備通過網絡發送的消息,什么是串行化和反序列化的最佳方式,可以在所有系統上移植,如小端和大端?
我應該准備一個“unsigned char”的大緩沖區,並開始逐個復制字段嗎? 之后,只需調用send命令?
如果我要按照前面的方式,我怎么能繼續跟蹤指向復制字段的位置的指針,我的猜測是為每個數據類型構建一個能知道移動指針的字節數的函數,對嗎?
如果有人可以為我提供一個解釋良好的例子,那將非常感激。
一些想法......沒有特別的順序......而且可能沒有任何意義
對不起,我現在沒有時間給你一個完整的例子,但我希望上面的想法能讓你開始。
作為一個例子,我無恥地插入我自己的(de)序列化庫,它包裝成msgpackv5格式: 亂舞
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.