C++
cheng168520
这个作者很懒,什么都没留下…
展开
-
Linux下各类TCP网络服务器的实现源代码
Linux下各类TCP网络服务器的实现源代码大家都知道各类网络服务器程序的编写步骤,并且都知道网络服务器就两大类:循环服务和并发服务。这里附上源代码来个小结吧。首先,循环网络服务器编程实现的步骤是这样的: 建立socket(这里用到socket()函数及函数setsockopt())原创 2008-10-29 21:50:00 · 371 阅读 · 0 评论 -
ACE 体系结构
ACE 的基础是:1. ACE OS adaptation2. C++ wrapper facades它们封装了 OS 的并发网络编程机制 1)ACE OS adaptation 层封装了 OS API,对上层提供 OS 平台无关的接口。2)C++ wrapper facades 层位于 OS adaptation 之上,提供了与之相似的功能,这些功能使用 C++原创 2008-12-02 12:55:00 · 676 阅读 · 0 评论 -
C++中用vectors改进内存的再分配(转)
摘要:本文描述的是一种很常见的情况:当你在某个缓存中存储数据时,常常需要在运行时调整该缓存的大小,以便能容纳更多的数据。本文将讨论如何使用 STL 的 vector 进行内存的再分配。 这里描述的是一种很常见的情况:当你在某个缓存中存储数据时,常常需要在运行时调整该缓存的大小,以便能容纳更多的数据。传统的内存再分配技术非常繁琐,而且容易出错:在 C 语言中,一般都是每次在需要扩充缓存的时候调用原创 2009-03-06 18:31:00 · 263 阅读 · 0 评论 -
new内存再分配
#include #include using namespace std; int main() { int *p=new int[20]; int *p1=new(p) int[5]; int *p2=new(p1+5) int[5]; int *p3=new(p2+原创 2009-03-06 18:47:00 · 389 阅读 · 0 评论 -
ACE_Task框架
一、概述 ACE_Task是ACE中的任务或主动对象“处理结构”的基类。ACE使用此类来实现主动对象模式。所有希望成为“主动对象”的对象都必须由此类派生。同时可将它看作是更高级的、更为面向对象的线程。ACE_Task处理的是对象,因此更有利于构造OO程序,产生更好的OO软件,而且,它还包括了一种用于与其他任务通信的易于使用的机制。ACE_Task可用作:更高级的线原创 2009-07-21 15:27:00 · 3269 阅读 · 1 评论 -
[转:STL扩展技术手册卷1]适配ACE_Message_Queue
适配ACE_Message_Queue我最近参与了一些关于“中间件路由服务”的商业网络项目,为满足项目需求,我花费了一番心血,将自适配通信环境(Adaptive Communications Environment,ACE)的内存队列适配到STL的集合概念,其成果将由本章涵盖。在使用ACE Reactor框架之前,你需要从ACE_Event_Handler派生出事件处理器类(覆盖相关的事件处理原创 2009-07-21 15:08:00 · 648 阅读 · 0 评论 -
ACE_Message_Queue
一直想体验下动态消息队列的特性,我一看见“ACE目前提供两种动态消息队列:基于最终期限(deadline)的和基于松弛度(laxity)的(参见[IX])动态消息队列”这句话,无限的好奇立即被激起,整了好久,结果我郁闷地发现不管我怎么设置,一点动态的特性都没有看见,和静态消息队列没有任何不同。调试跟进去才发现,原来在Windows和Linux的config文件中都没有定义"ACE_H原创 2009-07-21 16:38:00 · 4656 阅读 · 2 评论 -
ACE中日志系统(Logging Facility)的基本使用[1]
介绍了ACE中日志系统(Logging Facility)的基本使用一、简介以前曾介绍过一个开源日志系统log4cplus,ACE也有自己的Logging Facility,与log4cplus相似,ACE日志系统也具有线程安全、灵活、分级显示等特点,可以面向程序调试、运行、测试、和维护等全生命周期,可以选择将信息输出到屏幕、文件、系统日志(如Windows下的Event log)、甚至是远程服务原创 2009-07-31 10:25:00 · 1342 阅读 · 0 评论 -
ACE中日志系统(Logging Facility)的基本使用[2]
ACE可以将输出重新定向到stderr(缺省)、系统日志、输出流(Output Stream)、甚至是回调函数,在C/S结构中,ACE也可以实现客户端输出定向到服务器。本节将详细讨论这些内容。 三 ACE的重新定向设置或改变ACE日志输出目标(logging sink)可以通过ACE_Log_Msg的方法open来完成,另外可通过set_flags和clr_flags来配合实现输出到多原创 2009-07-31 10:27:00 · 2653 阅读 · 0 评论 -
如何使用snmp++和agent++开发包
如何使用snmp++和agent++开发包【转】2007-07-25 16:01 从网站http://www.agentpp.com下载snmp++V3.2,agent++V3.5压缩包,以及msv7 project包,将这些包解压在同一个目录下,各目录同级放置,互不包含。 然后打开msvc下dynamic lib 工程,build all之后,就可以在dyna原创 2009-08-13 15:48:00 · 4295 阅读 · 2 评论 -
ACE_NEW_RETURN意思
ACE_NEW_RETURN的出处,有三个定义,都在OS_Memory.h中定义,可能是用于适应不同的平台而作的吧。下面的这个是最容易看懂的,用了try-catch语句。 # define ACE_NEW_RETURN(POINTER,CONSTRUCTOR,RET_VAL) / do { try { POINTER = new CONSTRUCTOR; } / c原创 2009-08-13 18:05:00 · 1254 阅读 · 0 评论 -
用Directshow进行视频开发的一些技术
原文地址:http://blog.csdn.net/aoosang/archive/2005/05/26/381148.aspx可惜所有图片丢失本篇文档主要描述关于用Directshow进行视频开发的一些技术主要包括下面内容1关于视频捕捉(About Video Capture in Dshow) 2选择一个视频捕捉设备(Select capture device) 3预览视频(Previewin原创 2009-08-17 17:11:00 · 1861 阅读 · 2 评论 -
ACE编译说明
ACE_wrappers 目录下的:ACE.sln 适用于 VC7.1ACE_vc8.sln 适用于 VC8,用于编译适用于 desktop/server Windows 平台的库ACE_WinCE.sln 适用于 VC8,用于编译适用于 Windows CE/Moblie 平台的库1. 按需要使用 MSVC 打开相关的 sln 文件2. 在 ACE_wrappers/ace原创 2008-12-02 12:54:00 · 510 阅读 · 0 评论 -
C++Builder下配置ACE
首先请下载ACE包,这里就多说了. 完成下载ACE包后,把ACE包解压缩,把里面的ACE_wrappers存放到指定的目录,这里把它存放到D盘,也就是D:/ACE_wrappers. 在使用之前需要先编译安装. (1)进入目录 D:/ACE_wrappers/ace下,在里面添加一个新文件config.h,并在config.h中输入内容: #include "ace/config-win32.h"原创 2008-11-27 14:08:00 · 361 阅读 · 0 评论 -
掌握 Linux 调试技术
掌握 Linux 调试技术引自http://berserker.blogdriver.com/berserker/268107.html在 Linux 上找出并解决程序错误的主要方法Steve Best(sbest@us.ibm.com)JFS 核心小组成员,IBM2002 年 8 月您可以用各种方法来监控运行着的用户空间程序:可以为其运行调试器并单步调试该程序,添加打印语句,或原创 2008-10-30 22:57:00 · 261 阅读 · 0 评论 -
使用gdb调试程序
一、调试方法: 首先, gdb到代码的出错处; 然后, bt(backtrace)看函数堆栈, 确定问题出在那条语句。 p(print) 打印变量的值,找原因 up 进入上一层堆栈, 追溯问题出在哪里。 二、 gdb 命令集 关于断点的命令:awatch:awatch用来为一个表达式设置观察点,在表达式的值发生改变时,或者当表原创 2008-10-30 22:59:00 · 266 阅读 · 0 评论 -
gcc基本的使用方法及常用指令
gcc基本的使用方法及常用指令前言 编译器在编译过程中,先将程式码编译成 object 档,然後再和程式库联结,成为可执行档。故一个编译器须提供的参数主要有几类: 1.指定编译器编出的object 档或是可执行档档名。 2.在编译过程做最佳化,可提升程式的执行速度。 3.设定搜寻程式库的标头档 (header file) 及程式库档的目录及指定程式库档档名。 提供进一步的资讯原创 2008-10-30 22:51:00 · 298 阅读 · 0 评论 -
GDB调试技术
GNU的调试器称为gdb,该程序是一个交互式工具,工作在字符模式。在 X Window 系统中,有一个gdb的前端图形工具,称为xxgdb。gdb 是功能强大的调试程序,可完成如下的调试任务: * 设置断点; * 监视程序变量的值; * 程序的单步执行; * 修改变量的值。 在可以使用 gdb 调试程序之前,必须使用 -g 选项编译源文件。可在 makefile 中如下原创 2008-10-30 22:55:00 · 228 阅读 · 0 评论 -
GDB调试精粹及使用实例
一:列文件清单 1. List (gdb) list line1,line2 二:执行程序 要想运行准备调试的程序,可使用run命令,在它后面可以跟随发给该程序的任何参数,包括标准输入和标准输出说明符()和外壳通配符(*、?、[、])在内。 如果你使用不带参数的run命令,gdb就再次使用你给予前一条run命令的参数,这是很有用的。 利用set args 命令就可以修改发送给程序的参数,而使原创 2008-10-30 22:56:00 · 217 阅读 · 0 评论 -
用GDB调试程序
GDB是一个强大的命令行调试工具。大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本。UNIX下的软件全是命令行的,这给程序开发提代供了极大的便利,命令行软件的优势在于,它们可以非常容易的集成在一起,使用几个简单的已有工具的命令,就可以做出一个非常强大的功能。于是UNIX下的软件比Windows下的软件更能有机地结合,各自发挥各自的长处,组合成更为强劲的功能。而Windows下的图形原创 2008-10-30 22:53:00 · 243 阅读 · 0 评论 -
日志消息管理
ACE提供了非常灵活、方便的日志管理和消息输出功能,下面就一些简单和直接的功能做一个简单介绍ACE_DEBUG 常规的一些输出消息 ACE_ERROR 会提供程序出错的一些低级消息2个宏的用法上是一致的 ACE_DEBUG(错误级别,"格式串",变量1...变量N) 其中部分错误级别系统定义如下: LM_SHUTDOWN = 01,系统死机级别 LM_TRACE原创 2008-11-24 11:36:00 · 508 阅读 · 0 评论 -
定时器的实现
定时器的实现 通过Reactor机制,还可以很容易的实现定时器的功能,使用方式如下。 编写一个事件反应器,重载handle_timeout()方法,该方法是定时器的触发时间到时,会自动触发该方法。 通过Reactor的schedule_timer()方法注册定时器。 启动reacotr的handle_events()事件分发循环。 当不想使用定时器时,可以通过Reactor的cancel原创 2008-11-24 11:35:00 · 1935 阅读 · 0 评论 -
ACE实现了一个通用的C/S架构通信程序
最近采用ACE实现了一个通用的C/S架构通信程序,具体实现简述如下:1. 服务器端:一个采用领导者/跟随者模型的线程池不断地接受从多个客户端发来的消息,并放入一个消息队列,然后又有一个采用半同步/半异步模型的线程池不断地从这个消息队列中取出消息进行处理。服务器端代码如下:(共10个文件)ACE_Server.cpp#include "ace/SOCK_Acceptor.h"#i原创 2008-11-24 11:34:00 · 559 阅读 · 0 评论 -
ACE读取配置文件
ACE读取配置文件.2008-01-22分类: 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://wanttocry.blogbus.com/logs/14298003.html 先贴代码#include "ace/OS.h"#include "ace/OS_Main.h"#include "ace/Configuration.h"#include "a原创 2008-11-24 11:37:00 · 2461 阅读 · 0 评论 -
获取类的类名
#include #include using namespace std;struct MessageHead{ int Sequence; int MessageID; virtual int GetSize() { return (sizeof(Sequence) + sizeof(MessageID)); }};struct Message:Me原创 2008-11-27 14:40:00 · 392 阅读 · 0 评论 -
基于ACE应用编程框架——线程池
同时处理多个客户请求,选择:为每个请求派生一个新线程;为每个连接/会话派生一个新线程;预先派生一池首管线程,也就是创建一个线程池;线程池模型有两种变种:半同步/半异步(half-sync/half-asynv model)一个侦听线程会异步地接收请求,并在某个队列中缓冲它们。另一组工作者线程负责同步地处理这些请求。层次:1.异步层:负责接收异步请求;2.排队层:负责对请求进行缓冲;3.同步层:含有原创 2009-08-17 16:34:00 · 1625 阅读 · 0 评论