ACE_Acceptor为一个抽象工厂,采用了客户端连接与服务处理程序分离的方式,开发人员可以分别关注两个不同的处理点,客户端连接处理与服务器处理程序都可以采用多种的方式,每一个客户端连接的处理与服务处理程序都可以实现适配。下文中的代码实现了服务器监听功能,当与客户端建立连接请求时,服务程序回调open方法,显示连接状态。 #include "stdafx.h" #include "ace/Reactor.h" #include "ace/Svc_Handler.h" #include "ace/SOCK_Acceptor.h" #include "ace/Synch.h" #include "ace/Acceptor.h" /* *用于处理客户端连接的处理器 *当客户端程序连接请求建立时,open方法将会被回调执行 */ class AcceptorHandler : public ACE_Svc_Handler<ACE_SOCK_STREAM,ACE_NULL_SYNCH> { public: int open(void*) { ACE_DEBUG((LM_DEBUG,ACE_TEXT("connection established/n"))); return 0; } }; int ACE_TMAIN(int argc, ACE_TCHAR* argv[]) { ACE_INET_Addr iaLocal(27002); //创建一个ACE_Acceptor ACE_Acceptor<AcceptorHandler,ACE_SOCK_ACCEPTOR> aAcceptor(iaLocal,ACE_Reactor::instance()); while (1) { ACE_Reactor::instance()->handle_events(); } return 0; }