ACE
C++程序员Carea
十年一线开发经验,热爱 C++ ,热爱编程
展开
-
TCP/IP网络编程模型
select原创 2016-03-07 13:53:33 · 769 阅读 · 0 评论 -
Acceptor-Connector模式一(Acceptor的工作)V2.0
在指定端口监听下面的程序会在7905端口持续监听,其他的什么也不做#include using namespace std;#include "ace/INET_Addr.h"#include "ace/Svc_Handler.h"#include "ace/SOCK_Stream.h"#include "ace/SOCK_Acceptor.h"#include "ace/Ac原创 2014-08-04 11:41:43 · 3394 阅读 · 0 评论 -
ACE_Reactor (V1.01)
介绍这个类提供了一个消息处理循环的功能,ACE中多个组件都会借助这个类的功能来实现消息循环处理。全局单例ACE_Reactor::instance()ACE提供了一个全局单例供开发者调用,一般情况下只需要调用这个全局单例遍可以了。使用的方式包含头文件在你的cpp文件中加上#include "ace/Reactor.h"包含启动代码在你的cpp文件中加入启原创 2015-11-10 13:34:10 · 1150 阅读 · 0 评论 -
ACE_Process进程管理
1 控制台程序启动时传递给main的参数控制台程序不管启动的时候是否有窗口,其参数都只有一个,那就是exe的全路径加exe的名字//运行时不显示控制台窗口#pragma comment(linker,"/subsystem:\"Windows\" /entry:\"mainCRTStartup\"")#include <fstream>using namespace std;int main(原创 2015-08-29 14:24:46 · 3967 阅读 · 0 评论 -
ACE_Message_Queue和spawn实现(生产者/消费者)(V2.00)
下面的两个线程共享一个消息队列,一个用来放整数到队列,一个从队列里取消息出来。此程序在控制台不停的输出递增数字,主要是内存不会泄露用到了多线程、ACE_Message_Queue、ACE_Message_Block、ACE_Thread_Manager::instance()->spawn等#include using namespace std;#include "boost/lex原创 2014-05-07 17:32:19 · 3140 阅读 · 0 评论 -
ACE_Thread_Manager(v3.12)
头文件#include "ace/Thread_Manager.h" 等待所有线程的退出ACE_Thread_Manager::instance()->wait();此函数执行的时候会等待所有线程退出之后再退出,为什么要等待所有线程的退出呢?因为多线程环境下程序的执行步骤和单线程不同,多线程环境下如果不等待所有线程都退出就会导致某些线程执行了一部分就退出,因为CPU不会把时间都原创 2014-07-02 11:58:05 · 3893 阅读 · 0 评论 -
ACE中的单例
ACE中有两种单例ACE_Singleton 和ACE_Unmanaged_Singleton,(1)ACE_Singleton会随即想ACE_Object_Manager登记该单体实例,ACE_Object_Manager承担了在程序终止时销毁单体实例的任务;(2)ACE_Unmanaged_Singleton并不向ACE_Object_Manager登记实例,销毁单体需要显示的调用原创 2014-04-11 11:27:13 · 4121 阅读 · 0 评论 -
ACE_Message_Queue高低水位
转自:http://blog.163.com/ecy_fu/blog/static/4445126200964115620862/ 一直想体验下动态消息队列的特性,我一看见“ACE目前提供两种动态消息队列:基于最终期限(deadline)的和基于松弛度(laxity)的(参见[IX])动态消息队列”这句话,无限的好奇立即被激起,整了好久,结果我郁闷地发现不管我怎么设置,一点动态的特性都没有看原创 2014-12-15 16:21:08 · 3281 阅读 · 0 评论 -
ACE_Message_Queue
ACE_Message_Block:http://blog.csdn.net/calmreason/article/details/21165441 ACE_Message_Queue生产者消费者: http://blog.csdn.net/calmreason/article/details/25233311 ACE_Message_Queue消息高低水位: http://blog.csdn原创 2015-09-09 21:06:32 · 2429 阅读 · 0 评论 -
ACE_OS中的系统函数
获取系统环境变量: ACE_OS::getenv http://blog.csdn.net/calmreason/article/details/48085595原创 2015-08-29 13:43:34 · 5305 阅读 · 0 评论 -
ACE日志设置
ACE日志Hello World:http://blog.csdn.net/calmreason/article/details/41957269 ACE多线程日志服务:http://blog.csdn.net/calmreason/article/details/21384545原创 2015-08-30 10:24:41 · 1799 阅读 · 0 评论 -
ACE的安装和使用
ACE Beginner:http://www.cppblog.com/sandy/archive/2005/11/24/1281.htmlACE 示例1 --- Time Server:http://www.cppblog.com/sandy/archive/2006/02/16/3293.htmlACE 示例2 --- Echo Serverhttp://www.cppbl原创 2013-10-14 10:09:06 · 5049 阅读 · 0 评论 -
ACE日志
使用ACE日志设施(一)HelloWorld使用ACE日志设施(二)详细介绍原创 2016-03-01 23:31:59 · 1694 阅读 · 0 评论 -
ACE_Task介绍(生产者/消费者)v3.0
1ACE_Task概述ACE_Task是ACE中的任务或主动对象“处理结构”的基类。ACE使用此类来实现主动对象模式。所有希望成为“主动对象”的对象都必须由此类派生。同时可将它看作是更高级的、更为面向对象的线程。ACE_Task处理的是对象,因此更有利于构造OO程序,产生更好的OO软件,而且,它还包括了一种用于与其他任务通信的易于使用的机制。ACE_Task原创 2013-11-24 18:08:38 · 6535 阅读 · 0 评论 -
C++开源TCP/IP网络开发框架:ACE从入门到精通V9.5
ACE快速入门的几个经典例子ACE初学者使用指南使用ACE日志设施(一)HelloWorld使用ACE日志设施(二)详细介绍ACE_Message_BlockACE_Message_QueueACE_Message_Queue高低水位ACE_Thread_ManagerACE_Message_Queue和spawn实现(生产者/消费者)ACE_Task介绍(原创 2016-02-28 00:59:52 · 12623 阅读 · 7 评论 -
ACE_Export与自定义导出符号(结贴)
不得不佩服ACE的跨平台强大之处 如果你需要在Windows下创建dll项目供其他项目使用。 你创建dll项目的代码要导出才能被外部访问,这个是由于Windows的动态链接库默认访问级别为私有导致的,所以只有导出的接口才会被外部访问。 在你打算导出的时候只需要使用ACE自带的导出宏即可:头文件应该像这个样子:#ifndef CONFIGLOADER_H原创 2014-09-26 19:47:04 · 2873 阅读 · 0 评论 -
ACE_Reactor系列
ACE_Reactor实现计时器ACE_Reactor实现运行时接收键盘输入原创 2016-03-01 09:39:25 · 2413 阅读 · 0 评论 -
ACE_Event_Handler
详细介绍原文地址ACE_Event_Handler是ACE中的所有反应式事件处理器的基类。这个类提供了以下能力:它定义输入事件、输出事件、异常事件、定时器事件以及信号事件的挂钩方法。它的挂钩方法允许应用以许多方式扩展事件处理器子类,而不必改变框架。它对面向对象回调的使用简化了“数据”与“对这些数据进行操作的挂钩方法”的关联它对对象的使用还使“一个事件源(或成组事件源)”与“事件原创 2016-03-01 09:59:01 · 1335 阅读 · 0 评论 -
ACE_Message_Block(V4.0)
下面的例子展示了向ACE_Message_Block写入多个字符串并一次性输出#include "ace/Message_Block.h"#include "ace/OS.h"#include #include using namespace std;int main(int argc, char * argv[]){ //if the BUFFERSIZE is too s原创 2014-03-13 13:14:36 · 3500 阅读 · 2 评论 -
ACE_Date_Time、ACE_Time_Value、ACE_OS::gettimeofday() 5.0
ACE_Date_Time和ACE_Time_Value原创 2014-05-04 09:15:28 · 7669 阅读 · 0 评论 -
ACE_INET_Addr
#include "ace/INET_Addr.h" //"tango.cs.wustl.edu:1234" //"128.252.166.57:1234"explicit ACE_INET_Addr (const char address[], int address_family = AF_UNSPEC); ACE_INET_Addr addr("221.226原创 2014-09-18 15:04:04 · 3748 阅读 · 0 评论 -
ACE的约定
ACE的内存与资源管理建立在一些约定之上,这些约定并没有单独的章节去介绍。这里统一归纳一下消息队列ACE_Message_Queue消息队列中的消息ACE_Message_Block:(1)创建:伴随业务创建堆对象(2)释放:谁使用,谁负责释放,使用完使用release方法释放服务处理器ACE_Event_Handler(1)创建:伴随业务创建堆对象(2)ope原创 2016-03-01 23:28:39 · 1166 阅读 · 0 评论 -
ACE Socket包装外观
目标(1)面向对象,强类型,不易误用(2)功能划分,接口职责明确到类相关类原创 2016-03-04 16:37:24 · 669 阅读 · 0 评论 -
Acceptor-Connector模式系列
Acceptor-Connector模式一(Acceptor的工作)原创 2016-02-29 17:14:05 · 2231 阅读 · 0 评论 -
获取系统环境变量: ACE_OS::getenv
(1)获取系统环境变量: ACE_OS::getenv#ifdef _DEBUG#pragma comment (lib,"ACEd.lib")#else#pragma comment (lib,"ACE.lib")#endif#include "ace/OS.h"#include "ace/Log_Msg.h"int ACE_TMAIN(int argc, ACE_TCHAR** arg原创 2015-08-29 10:44:07 · 5646 阅读 · 0 评论 -
使用ACE日志设施(二)详细介绍(v4)
最简单的日志设施#include "ace/Log_Msg.h"int main(int argc, char *argv[]){ ACE_DEBUG((LM_INFO,ACE_TEXT("Hello ACE Log Msg !"))); return 0;};将日志写入文件:#include "ace/Log_Msg.h"#inc原创 2014-03-17 14:56:29 · 4479 阅读 · 0 评论 -
用ACE_DLL打开dll组件中的函数(6.0版)
最近才知道ACE_DLL是动态管理组件(服务)的基础,这个框架可以让你打开和关闭某个dll对应的服务。本例最简单的调用dll中的类对象的print方法打印Hello World。网上的例子不太好用,当时觉得既然ACE_DLL是个类库,那就是头文件包含不就行了。看了ACE下载包里面的ACE_Main项目之后仿照他的自己写了。//子定义的类用于生成dllA.h#ifndef原创 2014-03-06 09:41:53 · 3703 阅读 · 0 评论 -
实现一个可限制最大连接数的Proactor服务器
在服务器程序实现中,一般要求能够限制服务器的最大连接数,这主要是从服务器的性能方面考虑,当过多的连接到来时,服务器虽然能够处理,但效率非常低下,也就会出现卡机的现象。 在用Proactor框架实现的服务器中可以很容易地做到这一点。ACE_Asynch_Acceptor类有一个虚方法:make_handler(),默认情况下是new一个服务处理对象出来,我们可以让他在适当的时候返回一原创 2014-04-08 09:14:22 · 2234 阅读 · 0 评论 -
ACE_Reactor实现运行时接收键盘输入
说明:在ACE中,很多动态发生变化的行为都同伙消息事件来产生和处理。小时事件例如:超时、信号发生等。能够产生消息的类都要继承ACE_Event_Handler,这个类提供了一些虚方法供派生类重写。比如:handle_signal()方法用来处理信号类型的消息发生的时候应该做什么;handle_timeout()方法主要用来捕获超时信号发生时应该做什么事。捕获消息的任务是原创 2014-03-07 10:30:10 · 2489 阅读 · 0 评论 -
设计一个类能够使用ACE的各种框架
框架需要什么类,就从什么类派生;如果需要使用多个框架,你就一次从多个关键类派生,使用多重继承即可;如图所示:如下内如为2014/4/1修订:这里还有一个问题,上面的结构适合非dll加载的情况。如果你的程序需要模块化开发,运行时加载,那么你的架构可能是如下这个样子:原创 2014-03-19 10:22:10 · 1936 阅读 · 0 评论 -
ACE_Reactor实现计时器
在ACE中,事件的处理由全局的ACE_Reactor::instance()负责。当某种事件产生时由ACE_Reactor::instance()->handle_events()来监听事件的发生。其中,ACE_Reactor::instance()->schedule_timer()方法负责设置计时,当超时的时候会回调其ACE_Event_Handler类型参数对象的 handle_ti原创 2014-03-06 22:37:35 · 3303 阅读 · 0 评论 -
高性能IO设计的Reactor和Proactor模式
http://xmuzyq.iteye.com/blog/783218在高性能的I/O设计中,有两个比较著名的模式Reactor和Proactor模式,其中Reactor模式用于同步I/O,而Proactor运用于异步I/O操作。 在比较这两个模式之前,我们首先的搞明白几个概念,什么是阻塞和非阻塞,什么是同步和异步,同步和异步是针对应用程序和内核的交互而言的转载 2014-03-12 11:06:01 · 854 阅读 · 0 评论 -
libprotobuf ERROR google/protobuf/wire_format.cc:1059
http://blog.csdn.net/jisuanji2121/article/details/9833463使用google::protobuf进行序列化,在运行时有如下警告!libprotobuf ERROR google/protobuf/wire_format.cc:1059] Encountered string containing invalid UTF-8转载 2013-12-11 14:46:11 · 5250 阅读 · 0 评论 -
ACE中TCP通信(此文章内容应该背下来)
概述:传输控制协议TCP(Transmission Control Protocol):TCP提供可靠的、面向连接的运输服务,用于高可靠性数据的传输。TCP协议的可靠性是指保证每个tcp报文能按照发送顺序到达客户端。Tcp通信过程一般为如下步骤:服务器绑定端口,等待客户端连接。客户端通过服务器的ip和服务器绑定的端口连接服务器。服务器和客户端通过网络建立原创 2013-11-24 21:47:50 · 2419 阅读 · 0 评论 -
ACE劫持了main函数导致链接错误
http://blog.163.com/henan_lujun/blog/static/19538333200912054920370/转载 2013-11-01 00:27:09 · 1114 阅读 · 0 评论 -
ACE_Svc_Handler与ACE_Event_Handler
http://www.cppblog.com/walkspeed/archive/2007/02/27/19030.html转载 2013-10-21 00:01:13 · 1825 阅读 · 0 评论 -
ACE常用类及对应的头文件
定时器ACE_Reactor::instance()->handle_events() #include "ace/Reactor.h"ACE_Event_Handler #include "ace/Event_Handler.h"int ACE_Event_Handler::handle_timeout(const ACE_Time_Value &curre原创 2014-08-04 11:05:29 · 2507 阅读 · 0 评论 -
ACE定时器
每一秒钟打印一行http://www.tuicool.com/articles/Zb263e计时器的打开和关闭封装http://andylin02.iteye.com/blog/440572自己写的简单计时器:程序开始之后2秒钟之后执行第一次到时触发的动作,以后每隔一秒钟都会执行相同的动作;当执行总次数到达3次之后就终止计时,整个程序退出,并停止事件监听,释放资源#原创 2014-08-01 16:18:45 · 2644 阅读 · 0 评论 -
ACE基本的TCP通信(定时发送,实时显示)1.0
客户端每隔8秒钟向服务端建立连接,发送内容之后关闭连接;服务端不停的接受客户端的连接请求,收到内容之后就打印出来;客户端从本地文件中读取内容发送给客户端; 客户端代码:client_main.cpp#include #include using namespace std;#include #include #include "ace/INET_Addr原创 2014-09-19 17:01:07 · 2657 阅读 · 0 评论 -
使用ACE日志设施(一)HelloWorld
(1)开始使用日志设施使用日志设施,总是要包含头文件:#include "ace/Log_Msg.h"ACE日志的Hello World[cpp] view plaincopyprint?#include "ace/Log_Msg.h" int main(int argc, char *argv[])原创 2014-12-16 10:44:29 · 2832 阅读 · 0 评论