ACE应用
文章平均质量分 71
bingozq
这个作者很懒,什么都没留下…
展开
-
一个测试ACE各种内存分配策略效率的程序
在256M内存的redhat9虚拟机上运行申请释放10000000,每次大小为1k,结果如下:testmalloc loop 10000 use time 32.950000 stestcached loop 10000 use time 1.730000 stestmallocmmap loop 10000 use time 5.050000 stestmallocmmaplite lo转载 2008-03-21 16:29:00 · 867 阅读 · 0 评论 -
ACE多线程技术和OCCI连接池技术的应用测试
主要功能是使用数据库连接池和多线程技术用OCCI访问ORACLE,贴出来和大家共同学习.#undef ACE_HAS_STANDARD_CPP_LIBRARY#define ACE_HAS_STANDARD_CPP_LIBRARY 1#include "ace/OS.h"#include "ace/Log_Msg.h"#include "ace/Task.h"#include #inclu原创 2008-04-06 10:05:00 · 2397 阅读 · 0 评论 -
数据接收中粘包及半包的处理
在使用TCP协议的网络应用中,不可避免需要处理的一个问题就是半包和粘包的情况。 一种做法是在接收端设一个比较大的缓冲区,先将收到的数据包都放到缓冲区中,然后从该缓冲区中选取完整的数据包出来。该缓冲区的实现可以使用环形缓冲区进行优化,避免频繁的数据移动。使用该方法的一个描述见 http://www.vckbase.com/document/viewdoc/?id=1203 另外一种做原创 2008-04-06 08:54:00 · 801 阅读 · 0 评论 -
ACE 反应式处理器
// --------------------------------------------------------------// // Copyright (C) 2008 - All Rights Reserved// // File: SvcPostman// Version: 1.0// Date: 2008-4-2// // Purpose: // // ----------转载 2008-05-17 09:58:00 · 695 阅读 · 0 评论 -
ACE 时间泵
// --------------------------------------------------------------// // Copyright (C) 2008 - All Rights Reserved// // File: TimerPump_T// Version: 1.0// Date: 2008-4-10// // Purpose: // // --------转载 2008-05-17 09:59:00 · 1226 阅读 · 0 评论 -
(转)ACE环境下为应用提供Telnet服务器
当我们的应用服务运行时,通常没有界面监控运行情况,也不能动态配置一些运行参数。那么我们能不能象Linux那样,提供一个类似shell那样的命令行界面进行交互呢? 当然可以,我们利用ACE的接受器和反应器框架,可以轻易为应用服务搭建一个类shell的远程Telnet环境。 主要有两个类实现:Network_Listener 监听类,打开TCP监听端口,准备接受客户端连接Network转载 2008-05-17 09:39:00 · 701 阅读 · 0 评论 -
完成端口的Win32实例及ACE实现对比
完成端口(IOC)是用来实现高性能服务的一种常用方法,主要是通过操作系统提供的异步调用功能实现IO操作,可以通过很少的线程数实现高性能的并发服务。ACE的前摄器(Proactor)模式在Windows下就是通过完成端口实现的。 1.下面是网上一个利用完成端口技术实现的高性能文件下载服务程序的源码:(用Visual C++ 6.0 SP5+2003 Platform SDK编译通过)转载 2008-05-17 09:42:00 · 803 阅读 · 0 评论 -
ACE 前摄式处理器
// --------------------------------------------------------------// // Copyright (C) 2008 - All Rights Reserved// // File: ServicePostman// Version: 1.0// Date: 2008-4-17// // Purpose: // // -----转载 2008-05-17 09:56:00 · 897 阅读 · 0 评论 -
ACE 的 TP_Reactor框架IO 性能测试
Athlon 64 3000+ 512M RAM OS : Windows这里的线程数指的是TP_Reactor线程池的线程数量最奇怪的是在线程数增加时,系统吞吐量竟然减少....测试的用例就是论坛上的TP_Reactor例子稍加改动,去掉一些自己的逻辑,只保留IO部分就是用的这个例子:http://www.acejoy.com/bbs/dispbbs.asp?boardI转载 2008-05-17 10:04:00 · 1008 阅读 · 0 评论 -
Linux Proactor测试程序
虽然linux 2.6内核将对aio的支持集成到内核中,但linux 2.6内核aio对socket的支持却不是真正的异步的。对socket的异步IO请求在内核中自动被转换成同步的调用。如果先对一个socket提交一个读操作,然后提交一个写操作,那么写操作只有在读操作完整之后才能执行。这对Proactor在Linux下的实际应用有严重的影响。ace自带一个测试程序$ACE_ROOT/exa转载 2008-05-17 10:10:00 · 1745 阅读 · 0 评论 -
一种远程对象调用方法
1.是否有用在完成之后,我用他写了几个例子.1. X_CORBA_HELLE_WORLD.exe, 运行bin目录hello_world_server.bat,或者运行X_CORBA_SERVER_USER_DLL.exe就是启动了服务程序,直接双击就是客户程序,可以看到效果.2. X_CORBA_TransFile.exe 命令行输入 –help可以看到帮助文件,或者直接看源码就转载 2008-06-05 08:28:00 · 2064 阅读 · 0 评论 -
ACE Proactor前摄器模式的服务器端代码
// sqServer.cpp : Defines the entry point for the console application.//#include "ace/OS.h"#include "ace/Arg_Shifter.h"#include "ace/Svc_Handler.h"#include "ace/Asynch_IO.h"#include "ace/Asynch_Acce转载 2008-06-05 08:14:00 · 1708 阅读 · 0 评论 -
用ACE写网络服务器
用Java的NIO写网络服务是非常简单的,而且性能和伸缩性都较高。如何用C++也达到这样的效果呢?答案是肯定的。ACE就可以完成这个任务。ACE是一个重型的网络服务实现方案,也具有跨平台,但毕竟是C++实现,而且它的怪异的命名和高级的模式使它的学习曲线都较高,对于追求高性能的C++实现,这些又算不了什么。与Java的NIO相比,ACE更进一步,它使用了Reactor模式,将Socket的操作封原创 2008-03-27 11:20:00 · 3360 阅读 · 0 评论 -
一个 ACE TCP Server/Client 例子
// Server#include "ace/SOCK_Acceptor.h"#include "ace/SOCK_Stream.h"#include "ace/OS_NS_stdio.h"#include "ace/Log_Msg.h"#define SIZE_DATA 18#define SIZE_BUF 1024#define NO_ITERATIONS 1class Serv原创 2008-03-27 11:24:00 · 4436 阅读 · 1 评论 -
[ACE] ACE_Hash_Map_With_Allocator性能测试
测试平台: 操作系统solaris 5.8 机器型号Sun-Fire-880测试方案 测试将插入50万条记录到使用内存映像文件的HashMap中,并根据下面不同的条件分别测试,看花费的时间和资源使用情况 a. 指定初始文件大小(100M),并做sync操作。结果: 花费64秒钟,但有时31秒,磁盘和内存占用都是100M的空间 b. 不做sync转载 2008-03-21 16:32:00 · 1449 阅读 · 0 评论 -
ACE中的Proactor介绍和应用实例
把这两天做Proactor的一些经验和心得写一下,可能会给一些人帮助。 Proactor是异步模式的网络处理器,ACE中叫做“前摄器”。 先讲几个概念: 前摄器(Proactor)-异步的事件多路分离器、处理器,是核心处理类。启动后由3个线程组成(你不需要关心这三个线程,我只是让你知道一下有这回事存在)。 接受器(Acceptor)-用于服务端,监听在一个端口上,接受用户的转载 2008-03-21 16:37:00 · 1346 阅读 · 1 评论 -
ACE Proactor无法持续响应udp报文的问题
代码主要是基于ACE_wrappers/examples/Reactor/Proactor/test_udp_proactor的代码 简化后的代码主要在收到udp报文后打印handle_read_dgram called 程序在2000端口监听,仅仅只能够接收一个udp报文 我很想知道如果想持续的接收报文,应该怎么去做? 我简化后的代码如转载 2008-03-21 16:39:00 · 947 阅读 · 0 评论 -
(转载)我的第一个ACE测试例子(Linux和Windows)
下面的一个测试例子在Linux和Windows下均通过,代码无需改动,只需重新编译就可达到跨平台执行。从一个侧面反应了ACE在可移植性上的魅力。 ACE版本:5.6编译环境:Linux version 2.6.18-4-686 (Debian 2.6.18.dfsg.1-12) gcc version 4.1.2 20061115 //源码:welcome.cpp原创 2008-03-21 16:11:00 · 935 阅读 · 0 评论 -
ACE Proactor机制下的异步SOCKET开发
Proactor机制和reactor机制的不同 1、在reactor机制下,所有I/O请求是同步的,即接到信号请求后,立即执行信号处理, 执行完后才开始继续监听信号请求,其接收信号请求的机制是被动的 而在Proactor机制下,I/O请求是异步的,即接到信号请求后,不立即执行信号处理(而是在莫个时刻执行该处理), 然后再继续监听信号请求,其接收信号请求的机制是主动的 2、要想符合Proactor机转载 2008-03-21 16:34:00 · 1461 阅读 · 0 评论 -
ACE Proactor 框架移植到Linux平台后无法响应events
这部分代码主要是基于ACE_wrappers/examples/Reactor/Proactor/test_udp_proactor.cpp 简化后,改部分代码在windows下的运行效果是: 工作在2000端口,监听udp报文并对udp报文进行处理,利用另外一台服务器向这台机器发送udp报文(利用flowtools发送netflow报文)可以得到如下的效果: pr转载 2008-03-21 16:43:00 · 1722 阅读 · 0 评论 -
高效的 ACE Proactor框架
1、WIN32下面用proactor可以达到几乎RAW IOCP的效率,由于封装关系,应该是差那么一点。客户端处理类的常规写法://处理客户端连接消息class ClientHandler : public ACE_Service_Handler{public: /**构造函数 * * */ ClientHandler(unsigned int client_recv_buf_si转载 2008-03-21 16:45:00 · 1093 阅读 · 0 评论 -
ACE Reactor框架处理事件及多个I/O流,应用举例。
目标:利用Reactor框架构建一个能处理多个连接的服务器。我们的方案:从 ACE_Event_Handler 类派生两个事件处理类,分工,"连接接受"和“连接服务"。 //用于接受连接的事件处理器(反应器)class ClientAcceptor : pu转载 2008-03-27 11:17:00 · 1474 阅读 · 0 评论 -
基于ACE的网络服务端通讯编程
完成了基本的通讯功能测试报告如下:昨天准备11台 只有7台机子可以运行 每个开了10个大部分 都好的 有1台开10个的时候出错 还有1台早上看的时候10个都出错 500){this.resized=true;this.style.width=500;}" resized="true" alt="" />根据上面的图显示结果来看是由于服务端先关闭,客户端发送数据失败转载 2008-03-27 11:22:00 · 1421 阅读 · 0 评论 -
设计模式- 主动对象(Active Object)
译者注:1. 对象分为主动对象和被动对象,主动对象内部包含一个线程,可以自动完成动作或改变状态,而一般的被动对象只能通过被其他对象调用才有所作为。在多线程程序中,经常把一个线程封装到主动对象里面。2. 在翻译过程中,发现的原文不妥处被更正。3. 原文中许多内容一再重复,颇有蛇足之感,取精用宏,删繁就简。4. 尝试更高程度的意译。关键词这个文章介绍主动对象模式,主动对翻译 2008-03-27 11:07:00 · 12344 阅读 · 1 评论 -
基于ACE实现的一个内存池-续篇
今天在看ACE内存分配的时候(太多,没看完),发现分配策略不全,我想实现一个能缓存,高效,内存总量不限的分配策略用于对 ACE_Message_Block对象的缓存,虽然ACE_Message_Block支持为它设置三种分配器,一个是对ACE_Message_Block对象本身message_block_allocator_,一个是对ACE_Data_Block本身data_block_alloc转载 2008-03-27 11:12:00 · 1716 阅读 · 0 评论 -
对方网络非正常断开检测方法
windows下此处的”非正常断开”指TCP连接不是以优雅的方式断开,如网线故障等物理链路的原因,还有突然主机断电等原因有两种方法可以检测:1.TCP连接双方定时发握手消息 2.利用TCP协议栈中的KeepAlive探测第二种方法简单可靠,只需对TCP连接两个Socket设定KeepAlive探测,所以本文只讲第二种方法在Linux,Window2000下的实现(在其它的平台上没有转载 2008-06-23 12:08:00 · 1144 阅读 · 0 评论