ACE Reactor FrameWork使用注意事项
来源:互联网 发布:风控模型用什么算法 编辑:程序博客网 时间:2024/06/07 14:18
Ace Reactor framework 是ACE 提供的一个相对比较简单的网络服务器框架,它简化了基于事件驱动的应用程序的开发,这些程序包括了网络应用程序。这些应用程序中的事件一般包括 因io操作而产生的进程间通信流,Posix 信号,Windows 句柄信号,计时器过期信号。ACE Reacttor framework 负责 发现各种事件源产生的事件, 把各种事件分用到先前已经注册好的事件处理器中,派发处理器定义的钩子方法去处理已经发生的事件。
涉及到的类图如下:
在使用时,需要从ACE_Event_Handler 中派生成两个类,可以分别 为 class clientAcceptor : public ACE_Event_Handler
,class clientService : public ACE_Event_Handler,clientAcceptor 用来接受客户端的连接,clientService 用于表示客户端,负责处理客户端的请求,并且发送服务器的响应给客户端。
在派生 clientAcceptor 和 clientService ,需要重写以下几个函数。
涉及到的类图如下:
在使用时,需要从ACE_Event_Handler 中派生成两个类,可以分别 为 class clientAcceptor : public ACE_Event_Handler
,class clientService : public ACE_Event_Handler,clientAcceptor 用来接受客户端的连接,clientService 用于表示客户端,负责处理客户端的请求,并且发送服务器的响应给客户端。
在派生 clientAcceptor 和 clientService ,需要重写以下几个函数。
#include "ace/event_handler.h" //头文件定义了ACE_Event_Handler
#include "ace/SOCK_Acceptor.h" //头文件定义了 ACE_SOCK_Acceptor
#include "ace/Reactor.h"
class clientAcceptor : public ACE_Event_Handler
{
public:
clientAcceptor(void);
clientAcceptor(ACE_Reactor * r);
~clientAcceptor(void);
int open(const ACE_INET_Addr & listen_addr);
int handle_input(ACE_HANDLE h); // virtual function,need overWritten;
int handle_close(ACE_HANDLE h,ACE_Reactor_Mask m); // virtual function,need overWritten;
virtual ACE_HANDLE get_handle(void) const // virtual function,need overWritten; //必须写成这个格式
{
return this->acceptor.get_handle();
}
protected:
ACE_SOCK_Acceptor acceptor; //一定要有,acceptor ,用于接受客户端的连接;
};
#include "ace/Event_Handler.h"
#include "ace/Message_Block.h"
#include "ace/Message_Queue.h"
#include "ace/SOCK_Stream.h" //头文件定义了 ACE_SOCK_Stream
#include "ace/Reactor.h"
#include "ace/Synch.h"
#include "ace/Message_Block.h"
#include "ace/Message_Queue.h"
#include "ace/SOCK_Stream.h" //头文件定义了 ACE_SOCK_Stream
#include "ace/Reactor.h"
#include "ace/Synch.h"
#ifndef CLIENTSERVICE_H
#define CLIENTSERVICE_H
#define CLIENTSERVICE_H
class clientService : public ACE_Event_Handler
{
public:
clientService(void);
clientService(ACE_Reactor * r);
{
public:
clientService(void);
clientService(ACE_Reactor * r);
ACE_SOCK_Stream &peer() { return this->sock_; }
~clientService();
int open();
// Get this handler's I/O handle.
virtual ACE_HANDLE get_handle (void) const //必须写成这个格式
{ return this->sock_.get_handle (); }
// Get this handler's I/O handle.
virtual ACE_HANDLE get_handle (void) const //必须写成这个格式
{ return this->sock_.get_handle (); }
int handle_input(ACE_HANDLE h);
int handle_output(ACE_HANDLE h);
int handle_close(ACE_HANDLE h);
private:
int handle_output(ACE_HANDLE h);
int handle_close(ACE_HANDLE h);
private:
ACE_SOCK_Stream sock_; // 一定要有,用于客户端的通信,获取客户端请求,发送服务器数据给客户端
ACE_Message_Queue <ACE_NULL_SYNCH> output_queue;
};
0 0
- ACE Reactor FrameWork使用注意事项
- 使用ACE Reactor框架编程
- 使用ACE Reactor框架编程
- Java reactor使用注意事项
- ace-Reactor
- ACE Reactor框架使用实例-大量代码
- ACE之Reactor模式使用实例
- ios framework 使用注意事项
- 使用自定义framework 注意事项
- [ACE程序员教程笔记]使用Reactor处理信号
- 一个简单的ACE Reactor框架的使用
- ACE Reactor 简单例子
- ACE反应器(Reactor)模式
- ACE反应器(Reactor)模式
- ACE反应器(Reactor)模式
- ACE反应器(Reactor)模式
- ACE中Reactor
- ACE反应器(Reactor)模式
- 如何成为一个好的程序员
- 最长子列和问题 在线处理法
- zzuoj--10401--物资调度(dfs)
- 检查局域网存活主机
- Android Activity和Fragment的转场动画
- ACE Reactor FrameWork使用注意事项
- 如何成为一个好的程序员(2)
- <5>噪点 信噪比
- 基于AJAX的输入提示jQuery插件
- Activity界面
- Android默认padding的消除
- Web Service中使用HTTP和JMS
- 批量创建&删除用户
- python 数据结构常用的模块