C语言Server和服务器之间的通信协议采用包头Header+包体Body的形式,能够具体实现这个吗?

C语言Server和服务器之间的通信协议采用包头Header+包体Body的形式,能够具体实现这个吗?,第1张

网络之间的数据传递 都可以认为是数据流的传递。具体什么意思呢?所谓协议,说白了 你就是发送一个结构体过去。你定义如下结构体
//定义包头
struct PacketHeader{
int uLen;//包长
int uOpCode;//协议号(项目实战中常规做法。)
};
//定义一个协议。传输 int 变量的值过去。
struct Protrol{
PacketHeader head;//协议头
int nBody; //协议身体,就是我们要传的值。
};
然后发送的时候这么发送:
Protrol a;
anBody = 1;
auLen = sizeof(Protrol );
SendBuffer((const char)&a,auLen);
接收端也是如此,根据Opcode的值,将收到的数据流强制类型转换成Protrol的指针就可以了。
比如收到的buff是:const char szBuff[1024]={0};
const Protrol pMsg = (const Protrol)szBuff;
这样就可以了。pMsg -> nBody ;就是你要的值。
现阶段 你学习到这个程度就够了,以后你就会发现一些问题,比如内存对齐 比如O2优化的问题。
尽管如此 这也是一个常用方法,或许你们教科书就是这么写的。这种方式非常简单。就这样。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13452554.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-09
下一篇 2023-08-09

发表评论

登录后才能评论

评论列表(0条)

保存