(转)ACE 示例2 --- Echo Server

本文介绍了Echoserver服务的两种实现方式:基于线程的方法和事件驱动模型。基于线程的方式简单易懂,但可能消耗较多系统资源;事件驱动模型则通过ACE库实现了高效的连接管理和数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Echo server就是那种提供回显服务的程序,就是收到什么,然后就发送什么的程序。

两种实现方法

1.Per client Per Thread (每个连接每个线程来处理)

这种方式比较简单,易于实现。缺点是如果有大量的连接,必然占用过量的系统资源。

 

说明:
      ACE_Thread用来启动thread,当有client连上来的时候,启动worker thread来处理。

2.事件模型
socket里面是有select机制,ACE也提供了这种方式。
概念:
Event_Handler:有事件来临的时候的处理器
Reactor:事件管理,负责管理Event_Hanlde和分发事件
Acceptor负责连接Event_Handle,Reactor和Sock_Acceptor

 

说明:
1.使用ACE_Acceptor模板类来定义自己的Acceptor
2.ACE_Reactor::instance()->handle_events()来实现事件分发
3.在Event_Handle里面使用reactor()->register_handler(this,ACE_Event_Handler::READ_MASK);来注册要关心的事件
4.在Event_Handle中使用peer()来获得Sock_Stream来发送接受数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值