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

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

阅读更多

acl 3.0.12 版本 (项目主页:https://sourceforge.net/projects/acl/,  技术文章主页:http://zsxxsz.ietye.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 的通信模块增加了 UDP 的通信能力,同时增加了 UDP 服务器通信模板。

 

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

. feature: acl_single_server.c, acl_ioctl_server.c, acl_aio_server.c, acl_udp_server.c 增加了可以获得本地监听套接口流对象集合的函数

. feature: master 服务器框架增加了专门针对 UDP 的服务器模板 acl_udp_server.c/acl_udp_params.h

. feature: ACL_VSTREAM 支持 UDP 传输; acl_vstream_net.c 中增加了 acl_vstream_bind 函数用来绑定 UDP 传输模式

. feature: ACL_VSTREAM 增加了 acl_vstream_set_local_addr, acl_vstream_set_peer_addr

. feature: ACL_VSTREAM 中添加了 struct sockaddr_in 类型的两个指针,以便于 ACL_VSTREAM 很容易支持 UDP 传输

. feature: ACL_VSTREAM 对象增加了 acl_vstream_set_local, acl_vstream_set_remote, acl_vstream_set_path 三个函数

. performance: ACL_VSTREAM 中将 remote_addr, local_addr 定义为指针,从而大大减少了 ACL_VSTREAM 对象创建时的尺寸大小

. compile: 增加了工程文件 Makefile.db,使用该工程文件编译,则可以使用 mysql 数据库功能,使用 Makefile 工程文件编译,则可以 lib_acl.a 更为干净 (即不依赖于任何第三方库)

. bugfix: events_select.c/events_select_thr.c 当套接字监听集合为空时休眠的时间单位为秒,需要将微秒级的 delay 转为秒级

. other: events 模块 ACL_EVENT_NOTIFY_RDWR/ACL_EVENT_NOTIFY_TIME 函数接口类型重新定义,在回调函数中增加了 ACL_EVENT,ACL_VSTREAM 参数,从而方便用户直接使用;因为这两个接口的重新定义,导致了很多功能模块做相应修改,主要影响的模块有:event, master, aio, ioctl

. other: 将 master 模块下的源文件代码排版整理了一下

. other: acl_vstream.c: acl_vstream_set_remote 重命名为 acl_vstream_set_peer

 

二、应用协议库:lib_protocol

. bugfix: http_chat_async.c 中 http_res_body_get_async/http_req_body_get_async 两个函数没有对 ctx->read_cnt 置 0

. other: lib_acl 库中 ACL_EVENT_NOTIFY_RDWR/ACL_EVENT_NOTIFY_TIME 函数接口定义的修改,与之相关的模块(icmp)进行了修改

. other: 因为 lib_acl 基础库中的 ACL_VSTREAM 读写回调函数接口变更,调整了与之相关的部分内部接口,主要影响到了 icmp 模块中 icmp_stream.c 中的内部接口

 

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

. feature: aio_stream 增加了 get_peer/get_local 用来获得网络连接流的本地及远程地址

. feature: master_udp 服务器模板增加了可在 proc_on_init() 虚函数中获得本地绑定套接字流对象集合的函数功能: get_sstreams()

. feature: master 服务器框架增加了 master_udp 服务模板类

. feature: connect_manager 类增加了根据键值字符串的哈希值获取连接池对象的虚函数,从而有利于在分布式环境里使用连接池

. feature: connect_manager/connect_pool 类增加了针对每个连接池有一个其位于连接池集合中的下标索引

. feature: http_request::request 中原来只能指定 GET/POST 两种请求方法,现在可以指定多种请求方法

. feature: http_header 允许设置自定义 (即除 GET/POST/PUT/CONNECT/PURGE之个) 的请求头命令字

. feature: memcache 类支持流式读写数据,从而可以支持大 value 的存取方式

. feature: master_threads 类在单独运行方式的使用场景接近于在 acl_master 框架下的运行场景

. feature: master_threads/master_aio/master_proc 类支持在单独运行模式下监听多个地址

. feature: acl_cpp_init.cpp 中添加了 WIN32 下关闭 DOS 窗口的函数

. feature: http/memcache 模块增加了连接池管理类

. compile: acl_cpp_init.cpp 中 freopen 返回的文件句柄因为未被使用而使编译器报警

. compile: 增加了 Makefile.db 工程文件,使用该文件编译则需要 mysql/sqlite 库; 如果不需要数据库相关的功能,则使用 Makefile 工程文件进行编译

. bugfix: memcache 类中当连接异常中断重试时会因请求数据被清掉而出错,原因是请求与响应共用同一个缓冲区所致,现将请求缓冲区与响应缓冲区分开

. bugfix: memcache.cpp 当调用 open 函数连接 memcached 服务器失败时,用 valgrind 检查出记录错误日志时引用了一个未经初始化的变量

. samples: 增加了针对 UDP 的测试用例 udp_client 

. other: lib_acl 库中 ACL_EVENT_NOTIFY_RDWR/ACL_EVENT_NOTIFY_TIME 函数接口定义的修改,与之相关的模块进行了修改

. other: 因为 lib_acl 基础库中的 ACL_VSTREAM 读写回调函数接口变更,调整了与之相关的部分内部接口,主要影响到了 ssl_stream/ssl_aio_stream

. other: connpool/http_request_pool/memcache_pool: 调整了构造函数,去掉了最后一个参数

分享到:
评论

相关推荐

    MiniGUI_3.0.12编程指南.rar

    - **多线程编程**:在某些情况下,MiniGUI可能需要与后台任务协同工作,了解多线程编程是必要的。 总的来说,MiniGUI_3.0.12编程指南是一个全面的学习资源,涵盖了从基础知识到高级特性的所有内容,适合希望在低...

    VLC_3.0.12的完整SDK包_可以进行VLC二次开发.7z

    这是VLC_3.0.12的完整SDK包_可以进行VLC二次开发。 参考文章:https://blog.csdn.net/xiaolong1126626497/article/details/115174182

    nurbs++_3.0.12.zip

    NURBS++是专门用于处理NURBS的C++代码库,其最新版本3.0.12提供了丰富的功能和高效的性能,便于开发人员在各种项目中应用NURBS技术。 NURBS的核心概念在于其灵活性和精确性。在传统的B样条基础上,NURBS引入了权重...

    minigui_src.rar_minigui_minigui3.0.12移植包

    - **系统集成**:将Minigui库与目标系统的内核、库和应用程序进行集成。 3. **扩展包功能**: - **字体支持**:可能包含多种字体文件,以支持不同语言和字符集的显示。 - **图形库**:可能包括额外的图形函数和...

    issdfut-64-3.0.10.iso-INTEL固态盘刷固件工具

    标题中的“issdfut-64-3.0.10.iso-INTEL固态盘刷固件工具”指的是Intel公司为他们的固态硬盘(SSD)提供的固件更新工具。这个工具通常用于修复或升级SSD的固件,以提高性能、稳定性或解决已知问题。...

    Spring Boot应用开发框架 v3.0.12.zip

    在"Spring Boot应用开发框架 v3.0.12.zip"中,包含了一份详细的说明文档(说明.htm)以及Spring Boot框架的核心库(spring-boot-3.0.12)。以下将详细解析这个版本中的关键知识点。 首先,Spring Boot的核心理念是...

    SAP JCo 3.0.12_32Bit

    总的来说,SAP JCo 3.0.12_32Bit是Java开发者与SAP系统集成的重要工具,通过它,可以轻松地在Java应用程序中集成SAP的功能,实现业务流程的自动化和数据的实时同步。对于涉及SAP系统的企业级Java项目来说,理解和...

    SAP JCo 3.0.12_64bit x86

    JCo 3.0.12_64bit x86特指该组件的一个特定版本,适配于64位的Intel EM64T(也称为Intel 64)和AMD64处理器架构。这些处理器广泛应用于个人计算机和服务器,以处理复杂的计算任务和大数据量操作。 SAP JCo的主要...

    OpenSSL3.0.12

    OpenSSL 是一个强大的安全套接层 (SSL) 和传输层安全 (TLS) 库,用于加密通信、实现网络协议,并提供了各种密码算法、常见的密钥和证书封装管理功能以及 SSL/TLS 协议。OpenSSL 的最新版本是 3.0.12,这是一个重要的...

    SAP JCo 3.0.12_64bit Itanium

    JCo 3.0.12_64bit Itanium 版本是专为Itanium架构设计的64位版本,确保在基于Itanium处理器的服务器上运行的Java应用能够无缝地集成到SAP环境中。 SAP JCo的核心功能包括: 1. **通信接口**:SAP JCo提供了Java...

    Intel SSD优化

    however, it provides an unnecessary constraint for solid-state drives (SSDs) because they offer higher levels of performance when they hold less data.To remove this unwanted constraint, Intel is ...

    INTEL SSD 驱动

    intel ssd 128g驱动程序,解决pcie不能识别固态硬盘的问题。

    Python库 | phcli-3.0.12-py3.8.egg

    《Python库phcli-3.0.12-py3.8.egg详解》 在IT行业中,Python作为一门强大的开发语言,拥有丰富的第三方库,极大地拓展了其应用领域。"phcli-3.0.12-py3.8.egg"便是这样一个Python库,专为Python 3.8环境设计,它...

    iperf-3.0.12.rar

    这个名为“iperf-3.0.12.rar”的压缩包文件包含了iperf 3.0.12版本,这是一个广泛使用的开源软件,用于测量网络带宽、延迟和其他关键网络特性。在Linux环境中,这个工具对于系统管理员和网络工程师来说是必不可少的...

    zhuli_life-3.0.12(2).apk

    zhuli_life-3.0.12(2).apk

    swigwin-3.0.12.rar

    3 添加环境变量到path, 比如: D:\backupsoftware\swigwin-3.0.12 4 添加环境变量 JAVA_INCLUDE 和 JAVA_BIN JAVA_INCLUDE : Set this to the directory containing jni.h JAVA_BIN : Set this to the bin ...

    vlc-3.0.12-win32.7z

    vlc3.0.12库

    prompt_toolkit-3.0.12.tar.gz

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

    thymeleaf-3.0.12.RELEASE-API文档-中文版.zip

    赠送jar包:thymeleaf-3.0.12.RELEASE.jar; 赠送原API文档:thymeleaf-3.0.12.RELEASE-javadoc.jar; 赠送源代码:thymeleaf-3.0.12.RELEASE-sources.jar; 赠送Maven依赖信息文件:thymeleaf-3.0.12.RELEASE.pom;...

Global site tag (gtag.js) - Google Analytics