文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>使用ACE_CDR类进行网络编解码(5-5)

使用ACE_CDR类进行网络编解码(5-5)

时间:2010-10-25  来源:ronat

    最后总结一下,要用ACE_CDR类来处理网络数据编解码,首先修改ACE的config.h文件。加上以下行,并重新编译。

#define ACE_ENABLE_SWAP_ON_WRITE
#define ACE_LACKS_CDR_ALIGNMENT
#define ACE_CDR_IGNORE_ALIGNMENT

    第一行的作用是让ACE_OutputCDR在编码时自动处理字节序的转换,参见本系列文章(2)中的说明。

    第二行的作用是让CDR类在编解码时进行紧缩处理,参见本系列文章(3)中的说明。

    最后一行可以只在用CDR类直接操纵原始buffer的时候才定义,以避免ACE隐式对齐调整可能引入的BUG,如果是接合ACE_Message_Block用的话就没必要定义。参见本系列文章(4)中的说明。

    然后在创建CDR对象时显式的指定使用大端字节序类型,如下:

ACE_OutputCDR ocdr(&mb, ACE_CDR::BYTE_ORDER_BIG_ENDIAN);
ACE_InputCDR icdr(&mb, ACE_CDR::BYTE_ORDER_BIG_ENDIAN);



    如果是早期版本的ACE就直接用硬编码的数字0指定大端字节序。

ACE_OutputCDR ocdr(&mb, 0);
ACE_InputCDR icdr(&mb, 0);

    总的来说,CDR类还是很好用的,由其是结合ACE_Message_Block一起。也强烈推荐结合ACE_Message_Block一起用,这样不用定义上面的第三行宏。而且如果是使用像proactor这样的框架时,是一定要结合ACE_Message_Block一起用的。


 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载