字体:  

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

peakzhang 发表于: 2008-5-11 17:27 来源: ACE 开发者

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 at 2008-5-11 17:27:51
在整编后加了下面一行代码

mb = ocdr.begin()->clone();
peakzhang at 2008-5-11 17:28:08
现在还有个问题是关于通讯机制的,如果说具体的数据包为PACKET,是不是应该先发送一个包含PACKET长度的HEAD,也是通过CDR+MBLK的方式,客户端发送两次,服务端响应两次(或者多次,取决于PACKET的长度),先处理HEAD,得到长度后建立存放PACKET的MBLK,直到全部接收完毕?
peakzhang at 2008-5-11 17:28:33
支持很多人都这么做