根据我学习的经验,先看三本书,再看ACE_wrappers/examples目录下的例子,自己独立调试,看代码运行之后的效果,
等对框架理解了以后再去咀嚼源代码是有比较意义的。
回复 #2 winston 的帖子
问题1:ACE_MESSAGE_BLOCK最多一次能申请多大的空间?问题2:handle_read_stream中如何处理没收完的情况?有没有例子?
回复 #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)的数据块,为什么多申请一个? C语言字符串结尾在操作的时候,经常要写\0,这个是系统诡异bug的重要来源之一。所以对付字符串的时候,习惯性的多分配一个,就是为了抵挡这个问题。
页:
1
[2]