okibun0129 发表于 2008-7-13 02:01:43

版主说的很对,建议还是先看看那几本书吧,C++NPv2上说的很明确,handle_accept这个函数是不需要客户自己重载的,
根据我学习的经验,先看三本书,再看ACE_wrappers/examples目录下的例子,自己独立调试,看代码运行之后的效果,
等对框架理解了以后再去咀嚼源代码是有比较意义的。

psycheqiqi 发表于 2009-10-13 08:54:01

回复 #2 winston 的帖子

问题1:ACE_MESSAGE_BLOCK最多一次能申请多大的空间?
问题2:handle_read_stream中如何处理没收完的情况?有没有例子?

psycheqiqi 发表于 2009-10-13 14:11:24

回复 #2 winston 的帖子

int CProactorClient::WriteDate(char *szSendBuf, int nSendCnt)
{
    ACE_Message_Block *smb = new ACE_Message_Block( nSendCnt+1);
    smb->copy(szSendBuf);
    smb->wr_ptr(nSendCnt);
    int nResult = this->writer_.write(*smb, smb->length());
    if ( nResult != 0)
    {
      ACE_TRACE("Write data failed!");
    }

    return nResult;
}
这个函数中为什么要申请new ACE_Message_Block( nSendCnt+1)的数据块,为什么多申请一个?

winston 发表于 2009-10-13 21:55:58

C语言字符串结尾在操作的时候,经常要写\0,这个是系统诡异bug的重要来源之一。所以对付字符串的时候,习惯性的多分配一个,就是为了抵挡这个问题。
页: 1 [2]
查看完整版本: Proactor 模式下数据发送与接收的问题。