发布于 2016-11-01 15:18:50 | 146 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的精品教程,程序狗速度看过来!

acl C语言网络框架库

acl 框架库是一个 C 库,主要包含:服务器开发框架、同步/异步网络通讯、常用数据结构、进程池/线程池、流式 xml/json 解析器、http/ping 应用协议等内容;


acl 3.2.2 版本发布了,

本次 acl 升级的最主要内容为:增加了 Http Websocket 功能模块(lib_acl_cpp中),增加了 C++ struct 对象序列化和反序列化功能(lib_acl_cpp 中,由 niukey@qq.com 提供);修复了一些已知的问题。

acl 包括以下丰富的常用函数库:

1、服务器框架:包括进程池模式、线程池模式、非阻塞模式、UDP通信模式、触发器模式以及协程模式

2、网络通信库:阻塞/非阻塞网络 IO 库(其中 lib_acl_cpp 库通过嵌入 polarssl 而具备了 SSL 通信能力)

3、HTTP 网络库:HTTP 客户端/服务端库,HTTP 服务端支持 HttpServlet 接口访问方式;支持 HTTP cookies/session;HTTP 客户端支持连接池及连接池集群;支持 Websocket

4、redis 客户端库:实现了 redis 客户端命令中 12 个大类中的总共 150 多个命令,支持连接池及集群连接池方式

5、常见网络应用库: SMTP 客户端库/PING 库/DNS 解析库/memcache 客户端库/handler socket 客户端库/beanstalk 客户端库/disque 客户端库

6、邮件解析库:mime解析库/RFC2047/RFC2048/mime base64/mime qp/mime uucode 等

7、事件引擎:支持 select、poll(for unix)、epoll(for linux)、kqueue(for bsd)、devpoll(for solaris)、iocp(for win32)、win32 窗口消息(for win32)事件引擎

8、通用连接池库:高效的连接池基础类库,支持丰富的功能

9、数据库客户端库:对原生的数据库客户端库进行了二次封装,使编程更为简易,功能更为丰富,支持连接池及连接池集群管理功能

10、xml/json 流式解析库:区别于网上其它已有的 xml/json 解析库,acl 中的 xml/json 解析库采用有限状态机方式解析数据,处理方式更为灵活

11、网络协程库:该库将阻塞 IO 模式在底层通过上下文切换和事件触发方式转变为非阻塞模式,从而方便程序员快速编写高并发、高性能的网络服务

12、支持将 C++ struct 对象序列化与反序列化(序列化为 Json 对象及由 Json 对象反序列化)

示例:

1、lib_acl/samples: 该目录下有大量的基于 lib_acl C 库的示例

2、lib_protocol/samples: 该目录下有大量的基于 lib_protocol C 库的示例

3、lib_acl_cpp/samples: 该目录下有大量的基于 lib_acl_cpp C++ 库的示例

4、lib_fiber/samples:该目录下有大量的基于协程的网络客户端/服务端示例

应用:

1、app/redis_tools: 该目录下为 redis 集群管理、监控及智能创建工具

2、app/wizard:用来自动生成 acl 服务器框架的向导程序

3、app/master_dispatch:用于管理和分发客户端连接的服务程序

4、app/gid:用来产生全局唯一整型 ID 的服务程序及客户端库

5、app/wizard_demo:为一些服务器测试程序

一、基础 C 库:lib_acl

.新特性:acl_json_util.c 增加 acl_json_create_null 及 acl_json_create_array_null 用于创建 null 类型的节点

.新特性:ACL_VSTREAM 结构体中新增标志位 omode,主要用于 UNIX 平台打开文件

.问题修复:acl_json_util.c 中 acl_json_build/acl_json_building 创建 json 字符串时,针对非文本类型不应该有双引号

.问题修复:修复了 url coder 针对  '+' 编码时的不兼容性问题

.编译:使用 gcc 编译时若打开预编译选项,个别文件会因头文件未包含而报错

.编译:可以在 centos4.7 上使用 gcc 3.x.x 编译

二、lib_protocol 库

.无变化

三、lib_acl_cpp 库

.新特性:增加 webosket 功能类

.新特性:增加对象系列化模块 gson 类,用来将 struct 对象序列化为 json 对象及由 json 对象反序列化为 struct 对象

.新特性:json 类增加了 add_null/add_array_null 用于增加 null 类型节点

.新特性:fstream 类新方法 rename 用于修改文件名

.问题修复:json.cpp 中判断 json 节点类型的方法有误

.问题修复:json_node 类中的 get_text 方法当字符串长度为 0 时应该返回空串 "" 而不是返回 NULL 空指针

.问题修复:websocket 类中的函数 read_frame_head 里,当数据长度字段为两个字节时,应该使用 short 类型且要使用 ntohs 而非 ntohl 做转换

.问题修复:db_handle::peek_open 函数中的参数 charset 没有生效

.问题修复:redis_zset.cpp 中第二个 zrevrangebyscore_with_scores 返回结果集顺序是反的

.问题修复:redis_string::incrbyfloat 及 redis_hash::hincrbyfloat 中在调用 get_string 后判断是否出错的方式有问题,应该使用长度做为判定条件而不是 bool 值

.应用:app/gson 为 C++ struct 对象与 Json 对象转换的工具

.示例:app/gson/test 目录下测试用例 test/test0/test1/test2/test3/test4 用于测试 C++ struct 对象的序列化及反序列化

.示例:samples/websocket 下增加例子:upload_client/upload_server

四、lib_fiber 库

.新特性:fiber.c 中实现了 __i386__ 下 SETJMP,LONGJMP 的汇编方式

.问题修复:fiber_io.c 中的 __thread_fiber->loop_fn 没有赋初值

.示例:新增例子 server3、server4

五、参考链接:
oschina-git:https://git.oschina.net/zsxxsz/acl
github: https://github.com/zhengshuxin/acl/
sourceforge:http://sourceforge.net/projects/acl/



历史版本 :
acl_3.3.0 发布,跨平台网络通信与服务器框架
acl.3.2.2 发布, 跨平台网络通信与服务器框架
跨平台网络通信与服务器框架 acl 3.2.0 发布
acl 3.1.5 发布,跨平台网络通信与服务器编程框架
acl 3.1.4 发布,跨平台网络通信与服务器编程框架
最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务