找回密码
 用户注册

QQ登录

只需一步,快速开始

楼主: dm119

Proactor 模式下数据发送与接收的问题。

[复制链接]
发表于 2008-7-13 02:01:43 | 显示全部楼层
版主说的很对,建议还是先看看那几本书吧,C++NPv2上说的很明确,handle_accept这个函数是不需要客户自己重载的,
根据我学习的经验,先看三本书,再看ACE_wrappers/examples目录下的例子,自己独立调试,看代码运行之后的效果,
等对框架理解了以后再去咀嚼源代码是有比较意义的。
发表于 2009-10-13 08:54:01 | 显示全部楼层

回复 #2 winston 的帖子

问题1:ACE_MESSAGE_BLOCK最多一次能申请多大的空间?
问题2:handle_read_stream中如何处理没收完的情况?有没有例子?
发表于 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)的数据块,为什么多申请一个?
发表于 2009-10-13 21:55:58 | 显示全部楼层
C语言字符串结尾在操作的时候,经常要写\0,这个是系统诡异bug的重要来源之一。所以对付字符串的时候,习惯性的多分配一个,就是为了抵挡这个问题。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-12-23 13:54 , Processed in 0.027942 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表