我想在Linux上使用C ++中的Berkeley套接字构建一个简单的应用程序协议。传输层应为UDP,协议将包含以下两部分:
第一部分:
它是一个固定的部分,它是具有以下字段的协议标题:
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命令?
如果我要按照前面的方式,我怎么能继续跟踪指向复制字段的位置的指针,我的猜测是为每个数据类型构建一个函数,该函数将知道移动指针的字节数,正确?
如果有人可以向我提供一个解释良好的例子,那将非常感激。
答案 0 :(得分:1)
一些想法......没有特别的顺序......并且可能没有合理意义
对不起,我现在没有时间给你一个完整的例子,但我希望上面的想法能让你开始。
答案 1 :(得分:1)
作为一个例子,我无耻地插入我自己的(de)序列化库,它包装成msgpackv5格式: flurry