ACE介绍及简单服务器实例

转自

http://www.cnblogs.com/sevenyuan/archive/2010/06/13/1757873.html

ACE的全名是 ADAPTIVE Communication Environment,是一组可以自由使用的、开源的面向对象(OO)的、跨平台的网络通信构架。

框架供网络程序的开发:

l      事件多路分离组件:ACE Reactor(反应堆)和Proactor(前摄器)是可扩展的面向对象多路分离器,它们分派应用特有的处理器,以响应多种类型的基于I/O、定时器、信号和同步的事件。

l      服务初始化组件:ACE Acceptor(接受器)和Connector(连接器)组件分别使主动和被动的初始化任务与初始化一旦完成后通信服务所执行的应用特有的任务去耦合。

l      进程和线程管理:提供多进程和多线程的派生和管理方法,消除了平台的差异性。

l      服务配置组件:ACE Service Configurator(服务配置器)支持应用的配置,这些应用的服务可在安装时和/或运行时动态装配。

l      分层的流组件:ACE Stream组件简化了像用户级协议栈这样的由分层服务组成的通信软件应用的开发。

l      命名服务:ACE NamingService提供了单进程命名上下文、同一节点共享命名上下文和在网络上命名上下文的服务设施。

除此以外,ACE还提供了信号、线程安全与同步、内存管理等等多种丰富的功能。ACE已经成长成为一个完善的系统,在网络编程方面,能够提供非常丰富的服务。

下面是个ACE核心代码,构建了一个服务器

复制代码
代码
     
     
int main( int , char * []) { ACE_INET_Addr port_to_listen ( 9999 ); ACE_SOCK_Acceptor acceptor; acceptor.open (port_to_listen, 1 ); while ( 1 ) { ACE_SOCK_Stream peer; ACE_INET_Addr peer_addr; ACE_Time_Value timeout ( 10 , 0 ); if ( 0 == acceptor.accept (peer, & peer_addr, & timeout, 0 )) { char buffer[ 4096 ]; ssize_t bytes_received; while ((bytes_received = peer.recv (buffer, sizeof (buffer))) != - 1 ) { peer.send_n (buffer, bytes_received); } peer.close (); } } return 0 ;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值