ACE学习笔记(二)
来源:互联网 发布:java finalize 编辑:程序博客网 时间:2024/04/29 12:13
今天又把ACE的整编和解编看了看,看看ACE_OutputCDR和ACE_InputCDR都做了什么,我就想知道两点,一是它内部的数据时怎么保存的,二是它在什么地方用到了hton*和ntoh*函数。
我只看了write_2和read_2函数,这2个比较有代表性。
首先它内部数据都保存在了ACE_Message_Block中,对ACE_OutputCDR::write_2,我没有定义ACE_ENABLE_SWAP_ON_WRITE,则直接转为char*写进了内存,这里就有个问题,如果我是小端,那么发送出去的字节序也是小端,对端接受时得要知道我发送出去的字节序了。对ACE_InputCDR::read_2,如果没有定义ACE_ENABLE_SWAP_ON_WRITE,则会判断本机字节序和网络字节序是否相同,如果不相同直接不做转换,否则调用ACE_CDR::swap_2。就相当于调用了hton*了。
所以如果自己写程序,接收端和发送端的机器字节序相同,则不要ACE_ENABLE_SWAP_ON_WRITE,也不用考虑字节序的问题,收到ACE_Message_Block时,直接使用应该就可以。或者在发送时候显示指定其为大端ACE_OutputCDR cdr;cdr.reset_byte_order(BYTE_ORDER_BIG_ENDIAN),接收时再转为本机字节序。
- ACE学习笔记(二)
- ACE学习笔记:ACE Socket
- ACE学习笔记(二)--消息队列(简介)
- ACE学习笔记二(开发聊天程序)
- ACE学习笔记(二)--消息队列(简介)
- ACE学习笔记
- ACE学习笔记
- ACE学习笔记
- ACE学习笔记
- ACE学习笔记(一)
- ACE学习笔记(三)
- ACE 架构学习笔记
- ACE 学习笔记(一)
- ACE开发游戏服务器笔记二
- ACE笔记(二):ACE_Task框架
- ACE开发游戏服务器笔记二
- ACE学习笔记(一):ACE的安装与配置
- ACE学习笔记--持续更新中
- C++中map用法(二)
- 20个热门jQuery的提示和技巧
- 去除IBM小机面板黄色指示灯的报警(AIX系统清除黄色叹号灯)
- 使用easyUI创建一个自动播放的tabs
- #pragma pack(1) and #pragma pack(push,1)是什么意思
- ACE学习笔记(二)
- Linux 和UNIX 的新手培训教程
- Android推送通知指南
- Oil Deposits(bfs)
- 命令行下载利器- Aria2
- [vim] vim 单词高亮
- 掌握 Linux 调试技术
- virtualbox和kvm的区别
- java中的栈和堆