请教关于ACE_InputCDR/ACE_OutputCDR的使用方法??

26 views
Skip to first unread message

lizp

unread,
Dec 11, 2008, 4:20:41 AM12/11/08
to ace-china
还有它的作用?
 

 
2008-12-11

Stone Jiang

unread,
Dec 11, 2008, 8:17:05 AM12/11/08
to ace-...@googlegroups.com
这两个类,配合ACE_Message_Block常用来做消息的编码和解码之用。可以用于网络的发和收,以及ACE_Tasck的派生类消息传输时对消息的编解码。
 
它提供了一些机制,可以让消息编解码足够高效,并能很好处理字节序的问题。
 
使用方法比较简单,见下面的代码
 
ACE_InputCDR cdr (MAX_MSG_LEN);
cdr << ACE_CDR::Long (msgID) ;
cdr << ACE_CDR::Long (msgType);
 
ACE_Message_Block* mb = cdr.begin()->duplicate();
 this->processTask_->putq(mb);
 
-------------------------------------------
ACE_Message_Block* mb ;
 
getq(mb);
 
 ACE_InputCDR cdr(mb);
 
 ACE_CDR::Long msgID; 
 ACE_CDR::Long msgType; 
 cdr >> pid;
 cdr >> msgType;


 
2008/12/11 lizp <li...@zanb.com.cn>
还有它的作用?
 

 
2008-12-11

lizp

unread,
Dec 11, 2008, 9:49:55 AM12/11/08
to ace-...@googlegroups.com
Stone Jiang 写道:
这两个类,配合ACE_Message_Block常用来做消息的编码和解码之用。可以用于网络的发和收,以及ACE_Tasck的派生类 消息传输时对消息的编解码。
 
它提供了一些机制,可以让消息编解码足够高效,并能很好处理字节序的问题。
 
使用方法比较简单,见下面的代码
 
ACE_InputCDR cdr (MAX_MSG_LEN);
cdr << ACE_CDR::Long (msgID) ;
cdr << ACE_CDR::Long (msgType);
 
ACE_Message_Block* mb = cdr.begin()->duplicate();
 this->processTask_->putq(mb);
 
-------------------------------------------
ACE_Message_Block* mb ;
 
getq(mb);
 
 ACE_InputCDR cdr(mb);
 
 ACE_CDR::Long msgID; 
 ACE_CDR::Long msgType; 
 cdr >> pid;
 cdr >> msgType;


 
2008/12/11 lizp <li...@zanb.com.cn>
还有它的作用?
 

 
2008-12-11



我在网上也搜索了以下,楼上说得很对,可是发现ACE中很少用这些类,还有就是可恶的字节对齐问题,不知道经常使用该类的怎么解决得?网上并没有一个通用 的办法,或者说是不是这些类不怎么实用?

--

Stone Jiang

unread,
Dec 11, 2008, 9:53:08 AM12/11/08
to ace-...@googlegroups.com
CDR本意为"通用数据表现",源自CORBA,在TAO在用得很多。

lizp

unread,
Dec 11, 2008, 7:27:08 PM12/11/08
to ace-...@googlegroups.com
 
    那关于字节对齐的问题怎么解决呢?还是不用考虑?

2008-12-12

发件人: Stone Jiang
发送时间: 2008-12-11 22:53:29
抄送:
主题: [ace-china:521] Re: 请教关于ACE_InputCDR/ACE_OutputCDR的使用方法??
image_2008-12-12-08-26-47-359.png
Reply all
Reply to author
Forward
0 new messages