找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 4739|回复: 5

ACE_Acceptor ACE_TP_Reactor

[复制链接]
发表于 2010-12-7 14:23:53 | 显示全部楼层 |阅读模式
ACE_Acceptor<CServer_Acceptor,ACE_SOCK_ACCEPTOR> acceptor;//连接工厂

class CServer_Acceptor: public ACE_Svc_Handler<ACE_SOCK_STREAM,ACE_MT_SYNCH>
        {
        public:
                CServer_Acceptor();
                        ~CServer_Acceptor();
               
                virtual int handle_input(ACE_HANDLE fd = ACE_INVALID_HANDLE);

                virtual int handle_close(ACE_HANDLE /* = ACE_INVALID_HANDLE */, ACE_Reactor_Mask /* = ACE_Event_Handler::ALL_EVENTS_MASK */);
               
        };

int handle_close(ACE_HANDLE ,ACE_Event_Handler)
{delete this;
return 0;
}
请高手指点:当有连接时,ACE_Acceptor框架会新建服务处理器,通信结束时,在哪里释放服务处理器比较好呢?现在是在handle_close方法里,用delete this实现的,请问有没有更合适的方法?
多谢
发表于 2010-12-8 09:15:22 | 显示全部楼层
这个是比较常见方法吧,用handle close来delete this,把析构函数声明为private来强制new
将回收处理交给对象自己不是挺好的么
 楼主| 发表于 2010-12-8 14:50:26 | 显示全部楼层
ACE_Sock_Stream 的send 、recv方法设置超时怎么觉得不起作用呢?
发表于 2010-12-8 14:54:16 | 显示全部楼层
ACE_Sock_Stream 的send 、recv方法设置超时怎么觉得不起作用呢?
xiliang_pan 发表于 2010-12-8 14:50

呃... ...不会吧,你怎么确认的没起作用,代码是怎么写的。
 楼主| 发表于 2010-12-9 16:11:16 | 显示全部楼层
因为接收数据时,接收的数据量很大,指定的n没有起到作用,永远都不会超时
 楼主| 发表于 2010-12-9 16:12:51 | 显示全部楼层
有QQ吗?
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

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

GMT+8, 2024-5-16 18:33 , Processed in 0.016261 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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