ACE(Adaptive Communication Environment),它是一个面向对象的、跨平台的、开放源码的网络编程基础设施框架。
ACE 是由加利福尼亚大学Irvine分校的Douglas C.Schmidt 博士主导开发的,是一种跨平台可编译的网络编程API,并随后在工业界中发展、完善,它将底层的不同系统的细节透明化,为开发者提供统一的接口,从而可在不同系统上相互移植,提高代码利用率。与传统的网络编程相比,它更加规范化,极力避免工业开发中人们常会出现的错误情况,从而提高了程序的可靠性和易用性,并且拥有较高的性能优势。
读者可以从http://www.cs.wustl.edu/~schmidt/ACE.html进一步了解ACE和下载、安装。同时可以点击这里下载有关ACE的相关电子书籍。
本文实现了ACE的一个简单多线程服务器,主要是通过多线程处理并发能力。源代码请点击这里下载。
跟传统的socket编程一样,我们也需要在while循环中监听端口,并分配线程进行处理,程序的头文件定义如下:
#include "ace/SOCK_Stream.h"
#include "ace/SOCK_Acceptor.h"
class ACE_Server {
public:
int run_svc();
protected:
//thread entity pointer class
class Thread_Args{
public:
//the pointer of allocating the space of new thread
Thread_Args(ACE_Server *lsp) : ls(lsp){}
ACE_Server *ls;
ACE_SOCK_Stream peer;
};
virtual int handle_connections();
virtual int handle_data(ACE_SOCK_Stream* arg = 0);
in