`
zsxxsz
  • 浏览: 446339 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

网络与服务器编程框架库 acl_3.0.13 发布

阅读更多

acl 3.0.13 版本 (项目主页:https://sourceforge.net/projects/acl/,技术文章主页:http://zsxxsz.iteye.com/)) 发布了,acl 是 one Advanced C/C++ library 的简称,主要包括网络通信库以及服务器框架库等功能,支持 Linux/Windows 平台;整个 acl 项目主要包含三个函数库:lib_acl(纯C开发的基础库,主要包含网络通信及服务器编程框架以及其它丰富的功能)、lib_protocol(包含 HTTP/PING/SMTP 通信协议的C语言实现)、lib_acl_cpp(基于 lib_acl 及 lib_protocol 两个C库,提供了更为强大的编程接口及丰富的功能类);本次 acl 升级除了一些常见 bug 修复外,主要针对 ACL 的C++(lib_acl_cpp)模块增加了 线程及线程池类库。

 

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 解析库采用有限状态机方式解析数据,处理方式更为灵活

 

一、基础库:lib_acl

. acl_debug.c: 调整了参数的表示方法,调整后的调试标签及级别字符串的格式: 1:1, 2:10, 3:8...  or 1:1; 2:10; 3:8...

. feature: acl_master 服务器模板添加了 master_debug 配置项,方便用户在使用 acl 的服务器框架时调试日志

. feature: acl_aio_app_main.c/acl_ioctl_app_main.c, 增加了配置项 master_deny_banner 允许用户自定义拒绝连接的内容信息

. feature: acl_pthread_pool.c 增加了 acl_pthread_pool_qlen 函数,提供当前线程池队列中未被处理的任务数量

. performance: acl_vstream.c,将 __vstream_sys_read 的读过程进行了优化,改名为 __sys_read,以允许将用户输入的缓冲区做为系统 read 的内存地址,从而在调用 

acl_vstream_readn/acl_vstream_read 时避免了数据的二次拷贝

. compile: acl_aio_app_main.c, 其中在调用 write 时,需要判断返回值,否则会在高版本 gcc 上报警告

. bugfix: acl_mylog.c, 当通过 UDP 方式记录日志时,因为之前 acl_vstream.c 允许注册外部接口的改变而发生了不兼容性问题

. bugfix: acl_xml_util.c, acl_xml_tag_add() 在调用 acl_token_tree_add 时,第三个参数应该调用 ACL_TOKEN_F_STOP,原来是 ACL_TOKEN_F_PASS

 

二、功能丰富的C++库:lib_acl_cpp

. feature: 增加了线程类(stdlib/thread)及线程池类(stdlib/thread_pool)

. feature: thread 类分离出一个基类 thread_job,从而使逻辑更为清晰

. feature: 当使用 GCC 进行编译时,针对所有具有变参的函数接口定义添加了属性限定---__attribute__((format(printf, n, m))),这样便于在编译期就能发现因参数使用不当而导致的错误

. feature: HttpServletResponse 类支持 Transfer-Encoding: chunked 传输方式

. feature: connect_manager/connect_pool 允许动态添加、删除连接池对象

. bugfix: master_udp.cpp,当以 alone 方式运行时,没有将 socket_stream 赋给 ACL_VSTREAM::context,导致在 service_main 时又重新打开一次

. bugfix: thread.cpp,当线程为分离方式创建时 thread::thread_run 在调用完虚函数 run 后不得再引用线程对象的 return_arg_,否则会造成内存非法访问

. bugfix: db/db_mysql.cpp, 在打开 mysql 连接时设置字符集,判断是否设置成功的方法有误

. bugfix: master_udp.cpp, master_udp::service_main() 中的 socket_stream 是临时堆栈变量,如果被用户外部引用则可能造成内存非法访问

. samples: 增加了 master_udp_threads,该例子将线程池与 master_udp 模板结合

. samples: 增加了测试用例 thread_client,一个多线程网络客户端程序

. samples: 增加了测试用例 thread 用以测试线程类

. samples: 增加了测试用例 thread_pool 用以测试线程池类

. samples: 添加了 master_aio_proxy 用作纯 TCP 非阻塞代理

 

 github 地址:https://github.com/acl-dev/acl

分享到:
评论

相关推荐

    SharpNuke_3.0.13_C#版

    SharpNuke_3.0.13_C#版是一款基于.NET框架、ASP.NET技术构建的内容管理系统,主要由C#编程语言实现。这个版本是SharpNuke的特定迭代,旨在提供高效、可扩展的Web应用程序解决方案,尤其适用于构建新闻门户、企业网站...

    【最新版】Fantastical_3.0.13.zip【亲测可用】最好的日历应用程序

    与受邀者安排活动时,Fantastical可让您查看受邀者的空闲时间并帮助您找到适合每个人的时间。更好的是,您可以多次向您的受邀者发送活动建议,Fantastical会自动将其回复转变为活动。不再有来回短信,电子邮件或电话...

    NVR_(71-SL)BL_EN_STD_V3.0.13build150420.zip_Hikvision_firmware_n

    NVR_(71-SL)BL_EN_STD_V3.0.13build150420

    percona-toolkit-3.0.13_x86_64.tar.gz

    这个压缩包"percona-toolkit-3.0.13_x86_64.tar.gz"包含了版本3.0.13的工具,适用于64位系统。这个工具集由Percona公司开发,该公司在MySQL领域有着深厚的背景和专业知识,致力于提供高效、可靠的数据库解决方案。 ...

    unSPIDE_v3.0.13.

    unSP IDE is an integrated development environment (IDE) of 16-bit CPU series, provides developers excellent user experiences. The well-designed assembler syntax and C language help users simplify ...

    Python库 | biomaj_process-3.0.13-py2.py3-none-any.whl

    资源分类:Python库 所属语言:Python 资源全名:biomaj_process-3.0.13-py2.py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    prompt_toolkit-3.0.13.tar.gz

    这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是...

    DS-7808N-SH升级包V3.0.13_build_150420

    海康威视 NVR DS-7808N-SH 升级包 V3.0.13_build_150420 支持萤石云 升级后需要恢复出厂设置

    【最新版】elementor_v3.0.13可视化编辑插件

    WordPress主题实用自适应编辑页面/文章插件Elementor,是最流行的可视化编辑器。Elementor是一款非常现代的页面编辑器,作为最流行的免费页面编辑插件,它改变了WordPress建站的方式,让我们可以无需代码便能自己...

    libffi-3.0.13.tar.gz

    **描述:**该压缩包“libffi-3.0.13.tar.gz”包含了libffi库的一个版本,即3.0.13,它是glib和GTK在Linux环境下运行所依赖的一个关键组件。libffi是一个通用的、开源的函数调用接口(Foreign Function Interface),...

    libffi-3.0.13-18.el7.x86_64.rpm

    离线安装包,亲测可用

    sapjco3.0.13P_13-10005324_32_64

    该压缩包包含两个重要部分:一是“sapjco3-NTintel-3.0.13.zip”文件,这是SAP JCo 3.0.13的二进制库,包含了Java类库和必要的dll文件,用于在Java环境中实现SAP连接;二是官方文档和示例代码,这对于开发者来说是...

    sapjco3-NTAMD64-3.0.13_windows.zip

    而 "sapjco3.dll" 是Windows平台上的动态链接库,它实现了SAP JCo的底层功能,如与SAP系统进行网络通信和数据交换。 标签 "sap java sapjco sapjco3.jar" 进一步强调了这是关于SAP的Java接口,特别是SAP JCo 3版本...

    Odin - Inspector and Serializer 3.0.13

    最新版:强大的Unity编辑器开发插件。

    percona-toolkit-3.0.13-1.el6.x86_64.rpm

    percona-toolkit-3.0.13-1.el6.x86_64.rpm 安装包

    libffi-devel-3.0.13-19.el7.x86_64.rpm

    官方离线安装包,亲测可用

    VLC-Android-3.0.13-ARMv7

    自行编译的vlc-android 3.0.13的app debug版本,可供开发人员测试,也可以当做播放器使用,基于arm-v7编译

    Raize Components v3.0.13 安装版

    《 Raize Components v3.0.13:深入解析组件库的卓越之作》 Raize Components v3.0.13 是一款专为DELPHI开发者设计的强大控件包,它集成了丰富的源代码资源,旨在提升开发效率,提供高质量的用户界面。此安装版的...

    libffi-3.0.13-19.el7.x86_64.rpm

    官方离线安装包,亲测可用

Global site tag (gtag.js) - Google Analytics