找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 4179|回复: 1

ACE_Asynch_Acceptor连接建立后,验证不通过,是否需要进行清理

[复制链接]
发表于 2012-7-3 07:07:12 | 显示全部楼层 |阅读模式
make_handler后,从缓冲池中创建了一个接收器,但在validate_connection时验证不通过,即返回-1,这时是否连接没建立,需要把这个连接器返回给内存池呢?

//平常客户端的Acceptor
//*.h
class CPigProactorAccept : public ACE_Asynch_Acceptor<CPigProactorAcceptHandler>
{
private:
virtual CPigProactorAcceptHandler *make_handler (void);
virtual int validate_connection (const ACE_Asynch_Accept::Result& result,
                               const ACE_INET_Addr &remote,
                               const ACE_INET_Addr& local);
};
//*.cpp
//==========================================================================
/************************************************************************/
/*
开发日期:  2012-5-31 xiaopig
版本:      1.0
参数:      略
返回值:    略
功能描述:  从连接处理器池中返回一个处理器
注意:      略
*/
/************************************************************************/
CPigProactorAcceptHandler* CPigProactorAccept::make_handler (void)
{
return App_PigProactorAcceptHandlerManager::instance()->Create();
}
/************************************************************************/
/*
开发日期:  2012-5-31 xiaopig
版本:      1.0
参数:      
   const ACE_Asynch_Accept::Result& result: 连接消息
   ACE_INET_Addr &remote: 客户端IP
   const ACE_INET_Addr& local: 本地服务器IP
返回值:    略
功能描述:  判断新连接是否合法,不合法不进行连接,合法进行连接.
    1)IP是否合法
    2)连接数是否达到最大值
注意:      略
*/
/************************************************************************/
int CPigProactorAccept::validate_connection (const ACE_Asynch_Accept::Result& result,
                        const ACE_INET_Addr &remote,
                     const ACE_INET_Addr& local)
{
      if(App_PigIPManager::instance()->CheckIP(remote.get_host_addr()) == false)
     {
           //在禁止列表中,不允许访问
           return -1;
     }
     return 0;
}
 楼主| 发表于 2012-7-3 07:40:50 | 显示全部楼层
不好意思,我搞错了,先调用validate_connection,再调用make_handler,所以不存在句柄创建了没有使用.
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

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

GMT+8, 2024-5-2 07:48 , Processed in 0.015025 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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