peakzhang 发表于 2008-5-21 23:00:39

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

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())

peakzhang 发表于 2008-5-21 23:00:58

自己解决了,在整编后加了下面一行代码

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

就是不知道这样做对不对
现在还有个问题是关于通讯机制的,如果说具体的数据包为PACKET,是不是应该先发送一个包含PACKET长度的HEAD,也是通过CDR+MBLK的方式,客户端发送两次,服务端响应两次(或者多次,取决于PACKET的长度),先处理HEAD,得到长度后建立存放PACKET的MBLK,直到全部接收完毕?

peakzhang 发表于 2008-5-21 23:01:03

很多人都这么做
页: [1]
查看完整版本: ACE_OutputCDR结合ACE_Message_Block进行数据传输的问题