`
zsxxsz
  • 浏览: 451043 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
      注:因为现在 acl_cpp 已经合并进 acl 项目中,本文仅是介绍了老版本的 acl_cpp 的编译过程,新版本的介绍及编译请参考:acl 框架库简介。         acl_cpp 是基于 acl 为基础开发的,目前 acl_cpp 象 acl 一样支持 Linux 和 Windows 平台。有关 acl 的编译,请参考 《acl 的编译与使用 》,本文主要描述 acl_cpp 的编译与使用。         一、Linux 平台       acl_cpp 库编译后的静态库名为:lib_acl_cpp.a       1、编译 lib_acl_cpp.a 库 ...
      xml 数据格式做为当今WEB开发的重要数据格式之一,应用非常普及,在文章 <acl 之 xml 流解析器>  中, 专门讲述了 acl 库中是如何实现流式 xml 数据解析的,在 acl_cpp 库中利用 c++ 语言特点对 acl 中的 xml 流式解析进行了进一步封装,从而更加方便用户使用,其中主要涉及到两个类:xml 类和 xml_node 类,现在分别就这两个类的函数功能做一简单介绍。   一、解析过程中的用法       1、 xml 类中的主要方法如下:   /** * 以流式方式循环调用本函数添加 XML 数据,也可以一次性添加 * ...
        acl 库的功能参见文章 acl介绍 及 https://github.com/acl-dev/acl/,本文主要讲述如何编译和使用 acl 库。       acl 库其实包含七个库:lib_acl (基础库)、lib_protocol(http 和 icmp 协议库)、lib_acl_cpp(封装了 lib_acl 和 lib_prot ...
      在 acl 的软件包中,lib_acl 是一个基础的库,另外,还有另外一个库 lib_protocol,这个库中不仅包含了 HTTP 协议的实现,而且还有一个 ICMP PING 协议的实现。前些日子,看到开源中国的微博中提到 fping 的新版本发布了,这是一个可以在一个线程里同时 PING 多个 IP 的程序,心中不尽暗痒,想到自己曾经还专门实现了一个类似的库,并且通用性可能更强,何不写出来给大家分享一下?因此,本篇主要是先以一个简单的小例子入手,演示如何使用 acl 中的这个 ICMP 协议包实现一个可以同时支持 WIN32 和 LINUX 的多目标 PING 程序。     ...
      非阻塞编程主要解决了网络通讯中高并发的问题,采用非阻塞方式,服务器不必为每个连接启动单独的进程或线程,从而大大地减少了系统资源的浪费;但是现实网络应用中,阻塞应用又是不可避免的,如我们对数据库编程时使用的数据操作的客户端库本身就是阻塞的。因此,单纯的非阻塞模式或阻塞模式均不能很好地胜任互联应用,如果能够将一些必要的阻塞过程融合进非阻塞过程中将会是一个现实的需求。本文主要介绍了如何保证在使用 acl_cpp 的非阻塞框架的同时,可以把阻塞的过程与非阻塞过程进行整合。关于非阻塞编程,可以参考 acl_cpp开发--非阻塞网络编程 中的章节。       本文讨论的内容是建立在 acl ...
      在 acl_cpp 的非阻塞框架的设计中,充分利用了操作系统平台的高并发机制,同时简化了异步编程的过程。但是,并不是所有的操作都是非阻塞的,现实的程序应用中存在着大量的阻塞式行为,acl_cpp 的非阻塞框架中设计了 ...
一、概述           acl 库的 C 库(lib_acl) 的 aio 模块设计了完整的非阻塞异步 IO 通信过程,在 acl 的C++库(lib_acl_cpp) 中封装并增强了异步通信的功能,本文主要描述了 acl C++ 库之非阻塞IO库的设计及使用方法,该异步流的设计思路为:异步流类与异步流接口类,其中异步流类对象完成网络套接口监听、连接、读写的操作,异步流接口类对象定义了网络读写成功/超时回调、连接成功回调、接收客户端连接回调等接口;用户在进行异步编程时,首先必须实现接口类中定义的纯方法,然后将接口类对象在异步流对象中进行注册,这样当满足接口类对象的回调条件时 acl_ ...
  现在 XML 解析器比较多,其实本没有必要在ACL中添加新的XML解析库,象JAVA、PHP、C#的开发者大都习惯于使用XML数据,因为他们有比较好用的XML解析库,而C/C++的程序员可能使用非XML数据的情形比较多,数据格式也各式各样。当然,如果C/C++程序员使用XML数据也有一些成熟的XML解析库,最丰富的解析库之一如libxml2,比较小型的如tinyxml等,这些库功能都比较丰富,但对流的支持可能有些局限性,象libxml2,接口使用起来还比较复杂,也不太容易掌握。经过再三考虑,决定在ACL中添加XML解析库,希望能满足如下功能:   1、接口丰富而简单(看似是矛盾的,呵呵) ...
一、acl 是什么?     其实是一个很简单的问题,acl 的英文字母 advanced C library 的缩写(当然,您也可以认为是 a C library 的缩写)。也许有人会问:"现在有这么多C的函数库,为何还费这么大劲再写一个?"。的确, ...
  在" 使用 acl 库开发一个 HTTP 下载客户端" 文章中介绍利用ACL库中的 HTTP 高级API函数编写HTTP下载客户端的简单的例子,本文介绍一下如何使用稍微底层的API来编写同样功能的例子。在这个例子中,可以看到那些高级API是如何封装底层API的。   请先看一个例子如下: #include "lib_acl.h" #include "lib_protocol.h" static void get_url(const char *method, const char *url, const char ...
一、TCP/IP 协议介绍   在介绍 HTTP 协议之前,先简单说一下TCP/IP协议的相关内容。TCP/IP协议是分层的,从底层至应用层分别为:物理层、链路层、网络层、传输层和应用层,如下图所示:         从应用层至物理层, ...
  在 acl 的协议库(lib_protocol) 中有专门针对 HTTP 协议和 ICMP 协议的,本文主要介绍如何使用 lib_protocol 协议库来开发一个简单的 http 客户端。下面首先介绍一下几个本文用到的函数接口。 /** * 创建一个 HTTP_UTIL 请求对象 * @p ...
  配置文件的读取是程序中必要部分,虽然不算复杂,但如果每次都写配置文件的分析提取代码也是件烦人的事。现在流行的配置文件格式有:ini,xml ,简单name-value对等格式,ACL库中实现了最简单的 name-value对格式的配置文件,该文件格式有点类似于 xinetd.conf 的格式,文件格式如下:   test.cf:   service myapp {     my_addr = 127.0.0.1     my_port = 80     my_list = www.test1.com, www.test2.com, www.test3.com, \       ...
  ACL库中有个模块实现了先进先出队列的功能,其使用方法非常简单,下面是结构定义: struct ACL_FIFO { ACL_FIFO_INFO *head; ACL_FIFO_INFO *tail; int cnt; /* for acl_iterator */ /* 取迭代器头函数 */ const void *(*iter_head)(ACL_ITER*, stru ...
  在UNIX平台下有一个创建目录的API接口 mkdir(),该函数使用比较简单,但如果需要创建多级目录,则操作起来就稍微麻烦些,也有一些公开的代码实现了创建多级目录的功能,而很多都是采用递归调用 mkdir() 创建目录的方式。在 Postfix 代码也有一段代码用于创建多级目录,它的优点是迭代方式创建多级目录,而不是递归调用 mkdir(),于是乎ACL作者将其改造了一下(主要增加了针对WIN32的支持),加入ACL库中。接口比较简单,如下: /** * 功能: 创建多级目录结构 * 如创建 "/tmp/dir1/dir2" (for unix) 或 &qu ...
Global site tag (gtag.js) - Google Analytics