找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 5231|回复: 2

ACE_OutputCDR结合ACE_Message_Block进行数据传输的问题

[复制链接]
发表于 2008-5-21 23:00:39 | 显示全部楼层 |阅读模式
ACE_Message_Block *mb = 0;
ACE_NEW (mb, ACE_Message_Block (nlen));
ACE_OutputCDR ocdr(mb) ;
int ire = login.Write(ocdr);
其中login为整解编的类,Write方法实现了<<,现在的问题是整编后mb中没有内容(通过内存看似乎又是有的),也就是无法用下面的语句进行发送操作,提示一直是空数据
this->writer_.write(*mb,mb.length())
 楼主| 发表于 2008-5-21 23:00:58 | 显示全部楼层
自己解决了,在整编后加了下面一行代码

mb = ocdr.begin()->clone();

就是不知道这样做对不对
现在还有个问题是关于通讯机制的,如果说具体的数据包为PACKET,是不是应该先发送一个包含PACKET长度的HEAD,也是通过CDR+MBLK的方式,客户端发送两次,服务端响应两次(或者多次,取决于PACKET的长度),先处理HEAD,得到长度后建立存放PACKET的MBLK,直到全部接收完毕?
 楼主| 发表于 2008-5-21 23:01:03 | 显示全部楼层
很多人都这么做
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

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

GMT+8, 2024-11-23 16:12 , Processed in 0.013743 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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