找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 3469|回复: 1

关于ACE_CDR的简单问题

[复制链接]
发表于 2008-1-17 18:41:59 | 显示全部楼层 |阅读模式
C++ NP1和C++ NP2书上提到:mb_align
一般在使用ACE_InputCDR前都会使用mb_align对齐内存,
但是在使用ACE_OutputCDR时却看不到使用,
是不是不需要调用,为什么?
 楼主| 发表于 2008-1-17 18:42:46 | 显示全部楼层
我说说我的理解,说实话我对ACE_CDR的对齐特性了解的也不是很多,所以理解的未必准确,大家讨论吧。
在使用ACE_InputCDR的时候调用mb_align,理由很简单,是你自己创建的缓冲区和数据流,当然需要对齐才好编码和对方解码。
而使用ACE_OutputCDR的时候,不用mb_align调整缓冲区,因为系统默认对方传来的数据流是对齐过的,就是说和上面的ACE_InputCDR对应了。
当然,每个类内部,其实还是可以调整对齐的。
不过我自己在工程中,一直少用CDR系列的类,因为对齐老是造成编解码错误,尤其是自定义的应用协议。
后来发现,可以在宏定义中去除这个对齐功能,重新编译ACE就好了。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-12-23 08:57 , Processed in 0.027750 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表