acl 3.0.22 版本发布了,acl 是 one advanced C/C++ library 的简称,主要包括网络通信库以及服务器框架库等功能,支持 Linux/Windows/Solaris/FreeBsd/MacOS 平台;整个 acl 项目主要包含三个函数库:lib_acl(纯C开发的基础库,主要包含网络通信及服务器编程框架以及其它丰富的功能)、lib_protocol(包含 HTTP/PING/SMTP 通信协议的C语言实现)、lib_acl_cpp(基于 lib_acl 及 lib_protocol 两个C库,提供了更为强大的编程接口及丰富的功能类);本次 acl 升级的主要内容有:1、SSL 同时支持阻塞、非阻塞模式,2、线程池服务器模板更好地支持在线更新,3、TCP 派发器提供了管理接口用于状态汇报,4、工程文件整理。
acl 包括以下丰富的常用函数库:
1、常见网络应用库: SMTP 客户端库/PING 库/memcache 客户端库/handlersocket 客户端库/beanstalk 客户端库
2、HTTP 网络库:HTTP 客户端/服务端库,C++版 HttpServlet 类,HTTP COOKIE/HTTP SESSION 等
3、邮件解析库:mime解析库/RFC2047/RFC2048/mime base64/mime qp/mime uucode 等
4、网络通信库:阻塞/非阻塞网络 IO 库(其中 lib_acl_cpp 库通过嵌入 polarssl 而具备了 SSL 的能力)
5、服务器框架:包括进程池模式、线程池模式、非阻塞模式、UDP通信模式及触发器模式
6、事件引擎:支持 select、poll(for unix)、epoll(for linux)、kqueue(for bsd)、devpoll(for solaris)、iocp(for win32)、win32 窗口消息(for win32)事件引擎
7、通用连接池库:高效的连接池基础类库,支持丰富的功能
8、数据库客户端库:对原生的数据库客户端库进行了二次封装,使编程更为简易,功能更为丰富
9、xml/json 流式解析库:区别于网上其它已有的 xml/json 解析库,acl 中的 xml/json 解析库采用有限状态机方式解析数据,处理方式更为灵活
一、基础 C 库:lib_acl
.新特性:json 模块增加了构造布尔型和数值型的接口
.新特性:事件引擎模块可以区分 ACL_EVENT_ACCEPT/ACL_EVENT_CONNECT 与 ACL_EVENT_READ/ACL_EVENT_WRITE 事件类型
.新特性:acl_json_util.c 中增加了流式将 JSON 对象转为字符串的函数 acl_json_building,这样当 JSON 对象比较大时使用该函数可以有效防止要求系统分配非常大的内存空间而导致分配内存失败
.新特性:acl_pthread_pool.c 中增加了 acl_pthread_pool_idle,
acl_pthread_pool_busy 两个函数,分别用来获得当前线程池中的空闲线程数及繁忙线程数
.新特性: acl_threads_server.c 服务器模板当子进程退出时会优先调用应用回调函数,由应用回调函数优先决定是否退出
.新特性:acl_mystring.c 中增加了 acl_find_blank_line 函数,用来从给定数据中查找空行的位置
.新特性:acl_trace.c 中增加了 acl_log_strace() 函数用来将函数调用堆栈输出至日志文件中
.新特性:acl_trace.c 中的函数 acl_trace_info 增加了防止递归嵌套的功能
.新特性:acl_threads_server.c 当采用 TCP 连接分发方式时,增加了汇报给分发器的信息字段,以便于分发器根据这些字段决定分发的策略
.新特性:acl_vstream.c 中循环写函数(loop_writen)支持超时写功能
.新特性:acl_msg.c 中的 acl_msg_error/warn/fatal/panic 支持记录函数调用堆栈
.性能:acl_vstream.c 优化了读 (__sys_read) 的性能
.问题修复: acl_json_util.c 中将 JSON 对象转为字符串的函数 acl_json_build
不能支持某些情形
.问题修复:acl_json_util.c 中的函数 json_escape_append 不应针对字符 '/' 进行转义
.问题修复:acl_vstream.c 在写时有可能会造成死循环
.问题修复:acl_vstream.c 中函数 __sys_read 的标志位 sys_read_ready 置 0 应该在 read_fn/fread_fn 函数返回后
.问题修改:acl_aio_read.c 中的 reactor IO 方式的函数 acl_aio_enable_read 内部在某种情况下有可能不会触发读回调过程
.问题修复:acl_sys_socket.c 中的读/写超时参数 timeout 不起作用
.问题修复:acl_threads_server.c/acl_aio_server.c 服务器模板,当采用 TCP 分发方式时,如果 acl_master reload 后若子进程配置的不是立即退出,则该子进程会重试连接 TCP 派发器从而导致该子进程永不会退出
.问题修复:snprintf.c 中 acl_secure_snprintf/acl_secure_vsnprintf 在调用 _vsnprintf_s 时有误,第三个参数需传入 _TRUNCATE,否则当缓冲区较小时会产生断言
.问题修复:acl_threads_server.c 将对客户端 IP 地址访问权限的处理过程放在 client_wakeup 中,否则会造成 master_threads2 类产生 core
.其它:整理库的所有头文件,使之更规范
二、lib_protocol 库
.问题修复: http_hdr_req.c 中的函数 __strip_url_path 仍然存在问题,因为输入的两个参数有可能指向相同的内存地址,从而导致第二个参数被赋 '\0',所以应该把 ACL_VSTRING_RESET/ACL_VSTRING_TERMINATE 放在 acl_argv_split 之后
.问题修复:http_hdr_req.c 中当重复使用线程局部变量时调用 __hdr_reset 来重置其中的一些参数,虽然调用了 ACL_VSTRING_RESET,但该宏并不会将缓冲数据尾部置 0,导致旧的数据会被重复使用
问题修复: proto_snprintf.c 中函数 proto_secure_snprintf/proto_securevsnprintf 在调用 _vsnprintf_s 时第三个参数应该为 _TRUNCATE,否则当缓冲区给的比较小时VC提供的 API 内部会产生断言
三、lib_acl_cpp 库
.新特性:locker 类增加了 try_lock 方法
.新特性:xml 类增加了几个方法
.新特性:json 类增加了构造布尔型和数值型的接口
.新特性:stream_setup 类现在可以支持 aio_stream 非阻塞流了
.新特性:polarssl_io 类增加了支持非阻塞 IO 的方法
.新特性:string 类增加了 find_blank_line/find_reset 方法,用来方便从当前缓冲区中查找一个空行的位置
.新特性:string 类增加了 substr 方法,用来从当前缓冲区中提取数据
.新特性:master_threads2 类增加了 proc_exit_timer 虚函数,当子进程需要退出时服务器模板将会回调该虚函数以决定子进程是否可以退出
.新特性:master_threads2 类增加了 thread_on_handshake 方法,当服务端调用完 thread_on_accept 后可以在子线程中调用 thread_on_handshake 方法,以处理较长的任务
.问题修复:snprintf.cpp 中函数 snprintf/vsnprintf 在调用 _vsnprintf_s 时第三个参数应该为 _TRUNCATE,否则当缓冲区给的比较小时VC提供的 API 内部会产生断言
.问题修复:fstream::open 方法在打开文件时先调用基类 stream::open_stream,然后基类函数再调用 C 库 acl_vstream_fdopen 时没有说明打开流的类型,导致内部流对象 ACL_VSTREAM 的关闭回调函数设置有误
.问题修复:http_response 类中当调用 read_header 方法时,需要自动将 head_sent_ 置为 false,以便于同一连接的下一次会话时可以正确发送 HTTP 响应头
.问题修复:istream 类中的 xxx_peek 函数在读出错时没有判断 errno 为 ACL_EWOULDBLOCK 的情况,在非阻塞方式下,当读返回 -1 且 errno 为 ACL_EWOULDBLOCK 时并不表示读出错
.问题修复:polarssl_io 类在非阻塞模式下有可能会阻塞在 IO 上
.新示例:增加了 json 测试用例 json/json7
.新示例:新 string/blank_line 示例,用来测试上面新增的方法
四、参考链接:
技术博客:http://zsxxsz.iteye.com/
download:http://sourceforge.net/projects/acl/
svn:svn checkout svn://svn.code.sf.net/p/acl/code/trunk acl-code
github:https://github.com/acl-dev/acl
QQ 群:242722074
- 浏览: 451131 次
- 性别:
- 来自: 北京
最新评论
-
zsxxsz:
2202877 写道你好,请问一下acl库是否可以移植到arm ...
利用ACL开发并发网络服务器 -
taoshengyijiu20008:
非常不错啊
acl 服务器编程框架设计要点 -
lgqss:
最后的例子用了__thread,依然不能用在动态库中?
再谈线程局部变量 -
foxbryant88:
膜拜中~
我为什么要发明一个轮子? -
zsxxsz:
eryueniaobp 写道关于reset的使用,查看了 g ...
使用 acl 库编写高效的 C++ redis 客户端应用
相关推荐
Samba是一款开源的网络文件系统服务器软件,它使得Linux/Unix系统能够无缝地融入Microsoft的Windows网络环境中,实现跨平台的文件和打印机共享。在本文中,我们将深入探讨Samba 3.0.22这一版本的源码,揭示其工作...
Resin,全称为CometD Resin,是由Caucho Technology开发的一款开源Java应用服务器,主要用作Web应用的托管平台。Resin以其高性能、轻量级和优秀的JSP/Servlet支持而闻名。在本案例中,我们关注的是Resin的3.0.22版本...
Resin 3.0.22是该软件的一个特定版本,发布于2009年,它在当时提供了稳定且高效的服务,尤其在Servlet和JSP的执行上表现优异。Resin 3.x系列是许多企业选择部署Java Web应用的热门平台,因其快速的启动速度、低内存...
增大你的手机声音非常多,尽量别调太大,太大脑子温温的,真的超级大声
freeradius-3.0.22 Windows版,64位
对于大型企业或需要跨平台运行的应用来说,这是一个极其宝贵的特点。 在NativeExcel 3.0.22版本中,开发者可以期待一系列增强的功能和优化。首先,这个版本可能对性能进行了提升,使得在处理大量数据时更加迅速,...
SAP .Net Nco 3.0.22 windows 平台 32bit 64bit SAP ERP vs None SAP ERP connection
FreeRADIUS服务器是一款广泛应用的开源 Radius 服务器,它在网络安全领域扮演着重要角色,主要负责认证、授权和计费(AAA)服务。Radius 协议主要用于网络接入控制,如无线网络、远程拨号用户以及企业内部的身份验证...
【东集Scaner3.0.22】是一款由东集技术有限公司开发的扫描软件,主要功能集中在数据采集和信息处理方面。版本号3.0.22.0表明这是一次重要的更新,可能包含了性能优化、错误修复以及新功能的添加。由于描述中提到“无...
在Windows环境下搭建FreeRadius服务器,可以实现对网络用户的身份验证,确保网络安全。 标题中的“FreeRadius windos 认证服务器”意味着我们将讨论如何在Windows操作系统上设置和使用FreeRadius作为认证服务器。这...
这个资源,"FlexGet-3.0.22.tar.gz",是 FlexGet 库的一个版本,从 Python 的官方软件包索引(PyPI)上获取,表明它是用 Python 编程语言编写,并且已经打包成 tarball 格式,方便用户下载和安装。 Python 库是 ...
版本号"v3.0.22"提示我们这是该应用的第三个主要版本,第0次次要更新,第22次微小更新,通常包含了开发者对前一版本的改进和修复。 【教育学习类应用】 教育学习类应用是指那些旨在帮助用户提升知识、技能或进行...
Screeny.3.SE.v3.0.22.
首先,NET框架是微软开发的一种开源、跨平台的应用程序开发框架,它提供了丰富的类库和工具,使得开发者能够快速构建网络应用程序,包括像酷影视点播系统这样的复杂系统。.NET框架支持多种编程语言,如C#、VB.NET等...
3.0.22版本可能包含了优化的用户体验设计,使得操作更加流畅,同时也可能修复了一些早期版本的已知问题,增强了软件的稳定性和性能。用户可以方便地导入、组织和导出语料库数据,与其他研究者分享研究成果。 再者,...
↓↓↓↓↓↓插件仅用于学习,禁止商用,为了维护您的个人权益,请支持正版↓↓↓↓↓↓ CHANGES: -10/09/2014 Made a cross platform TcpClient class to remove WP8 shenanigans with prebuilt DLL. ...
INTER P4600等系列NVMe磁盘官方工具ISDC tool,命令行下收集nvme磁盘状态数据。
这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是...
资源分类:Python库 所属语言:Python 资源全名:portage-3.0.22-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059