最近调试网络的服务端程序,自己写了一个小客户端程序来测试,发现服务程序解包错误。经调试发现客户端的协议头大小和服务器端的协议头大小不一致。原因是服务器端加了#pragma pack(1),而客户端没加。之前没接触过这个编译宏,现在来认真学习之。首先google之~~,原来#pragma pack有几种形式,我所接触到的是#pragma pack(n),即变量以n字节对齐。
变量对齐在每个系统中是不一样的,默认的对齐方式能有效的提高cpu取指取数的速度,但是可能会浪费一定的空间。在网络程序中采用#pragma pack(1),即变量紧缩,不但可以减少网络流量,还可以兼容各种系统,不会因为系统对齐方式不同而导致解包错误。了解了概念和优点,现在我们就来测试之~,详细参照:#pragma pack学习
#pragma pack学习
最新推荐文章于 2021-11-13 15:30:42 发布