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()) 在整编后加了下面一行代码
mb = ocdr.begin()->clone(); 现在还有个问题是关于通讯机制的,如果说具体的数据包为PACKET,是不是应该先发送一个包含PACKET长度的HEAD,也是通过CDR+MBLK的方式,客户端发送两次,服务端响应两次(或者多次,取决于PACKET的长度),先处理HEAD,得到长度后建立存放PACKET的MBLK,直到全部接收完毕? 支持很多人都这么做
页:
[1]