当前位置: 代码迷 >> 综合 >> (转)ACE反应器(Reactor)模式(3)
  详细解决方案

(转)ACE反应器(Reactor)模式(3)

热度:94   发布时间:2024-01-03 20:39:09.0

在服务器端使用Reactor框架

使用Reactor框架的服务器端结构如下:

服务器端注册两种事件处理器,ClientAcceptor和ClientService ,ClientService类负责和客户端的通信,每一个ClientService对象对应一个客户端的Socket连接。 ClientAcceptor专门负责被动接受客户端的连接,并创建ClientService对象。这样,在一个N个Socket连接的服务器程序中, 将存在1个ClientAcceptor对象和N个ClientService对象。

整个服务器端流程如下:

首先创建一个ClientAcceptor对象,该对象在Reactor上注册ACCEPT_MASK事件,Reactor将自动在监听端口建立Socket监听。 如果有对该端口的Socket连接时,Reactor将自动回调handle_input方法,ClientAcceptor重载此方法,并创建一个ClientService对象,用于处理和Client的通信。 ClientService对象根据服务器的具体功能实现,其处理过程和客户端程序类似,注册相应的回调事件并分发即可。 代码如下:

#include <ace/OS.h>#include <ace/Reactor.h>#include <ace/SOCK_Connector.h> #include <ace/SOCK_Acceptor.h&g