通信协议里面的帧结构
在网络上发送消息帧会有许多问题值得注意,所以现在纯文本的协议越来越火。
首先在c/C++中
使用struct会有对其格式,而且这种对其格式是编译器决定的。
所以你不能确定你定义的struct会被接收方正确识别。
在c中提供了一个1字节对其的宏PACK
#pragma pack(push,1)
struct
{
...
}
#pragma pack pop()
还有一个问题就是打字节小字节的问题,如果一个数组占多个字节,在不同的cpu上是不一样的
所以在向网络上传输的时候
htonl() h:host n:network l:long
ntohl()
htons()