作者:本站会员wjtz72
前几天做一个基于UDP的服务器。需要建立多个处理器,其中一个处理器为主服务,同时侦听2~4个端口;其它为子服务,都针对一个端口。子服务是根据客户端的请求,动态生成的。
由于主服务同时侦听侦听2~4个端口,所以使用了register_handle()一个3参数变体:register_handler(constACE_Handle_Set&handles,ACE_Event_Handler*event_handler,ACE_Reactor_Maskmasks);
子服务使用的是register_handle()常用的2参数变体:register_handler(ACE_Event_Handler*event_handler,ACE_Reactor_Maskmask)
编译一路ok,但在实际运行过程中,当需要动态生成子服务时,报错register_handle()的参数错误。在网上查找,也没有找到如何解决。
后来,怀疑是在一个Reactor实例中(我所有的服务使用ACE_Reactor::instance() )只能用一种register_handle()变体。于是将所有的register_handle()调用统一改为:register_handler(ACE_HANDLE io_handle,ACE_Event_Handler*event_handler,ACE_Reactor_Maskmask)。
问题解决,可以动态生成子服务,并完成相应的功能。
