
开源项目
文章平均质量分 79
轮子学长
这个作者很懒,什么都没留下…
展开
-
zlib库 安装与使用
1. zlib简介 zlib 适用于数据压缩的函式库,由Jean-loup Gailly (负责compression)和 Mark Adler (负责decompression)开发。 zlib被设计成一个免费的、通用的、法律上不受阻碍(即没有被任何专利覆盖) 的无损数据压缩库。zlib几乎适用于任何计算器硬件和操作系统。 zlib本身的数据格式可以进行跨平台的移植。 与在U原创 2016-10-29 19:53:38 · 52630 阅读 · 6 评论 -
libevent学习笔记【使用篇】——8. 连接监听:接收TCP连接
函数evconnlistener_new和evconnlistener_new_bind都用于分配和返回一个新的用于监听连接的对象。如果使用的是evconnlistener_new,需要保证传入的socket套接字处于non-blocking模式,可以通过evutil_make_socket_nonblocking等方法进行设置。listener允许临时关闭和重新开启监听翻译 2016-10-20 09:13:29 · 3620 阅读 · 0 评论 -
libevent学习笔记【使用篇】——7. evbuffer:缓冲IO的实用功能
创建和释放evbuffer, Evbuffer和其线程安全性, 直接往evbuffer中添加数据,在Libevent中使用evbuffer最频繁的就是网络IO。网络IO中操作evbuffer的接口如下:向evbuffer中加入文件翻译 2016-10-19 23:27:39 · 13661 阅读 · 1 评论 -
libevent学习笔记【使用篇】——6a. Bufferevents高级话题
成对的bufferevent, 调用bufferevent_pair_new()会设置pair[0]和pair[1]为一对相互连接的bufferevent。bufferevent_filter_new()函数创建一个封装现有的“底层”bufferevent的过滤bufferevent。bufferevent和速率限制.创建和使用基于OpenSSL的bufferevent. Openssl 线程安全。翻译 2016-10-19 09:17:33 · 4311 阅读 · 2 评论 -
libevent学习笔记【使用篇】——6. Bufferevents基本概念
大多数时候,应用程序除了响应请求外,还需要处理数据(及其缓存)。当我们想要写数据是,通常会有以下步骤 + 决定要向连接中写入什么数据, 把这些数据放入缓存 + 等待连接可写 + 写入尽可能多的数据 + 记住写入了多少数据,如果还有数据没写完。等待连接再次变为可写状态。 这样的I/O缓冲方式很常见,因而libevent为此提供了一种通用机制。 “bufferevent”由一个底层翻译 2016-10-15 11:57:10 · 4849 阅读 · 0 评论 -
libevent学习笔记【使用篇】——5.通用函数与可移植函数
<event2/util.h>定义了很多在实现可移植应用时有用的函数,libevent内部也使用这些类型和函数。evutil_socket_t。#define evutil_timeradd(tvp, uvp, vvp) /* */#define evutil_timersub(tvp, uvp, vvp) /* */evutil_make_listen_socket_reuseable翻译 2016-10-10 10:16:07 · 3560 阅读 · 0 评论 -
libevent学习笔记【使用篇】——4. 让events正常工作
构建event对象,事件持久性 EV_PERSIST,、创建一个可以将自身作为回调函数参数的的event,纯超时events 构造信号事件不在堆中分配event event_assign int event_del(struct event *ev);event_get_priority通过event_base_once插入的event不能被删除或者手动激活。翻译 2016-10-09 23:31:11 · 10565 阅读 · 2 评论 -
libevent学习笔记【使用篇】——3. 运行event loop
默认情况下,event_base_loop()会在event_base上一直运行,直到其上已经没有注册的events了。设置了EVLOOP_ONCE,那么loop将会一直等待,直到一些events变为active,然后运行这些激活的events的回调函数,如果设置了EVLOOP_NONBLOCK标志int event_base_loopexit(struct event_base *base, const翻译 2016-10-09 21:31:58 · 5654 阅读 · 1 评论 -
libevent学习笔记【使用篇】——2. 获取(创建)event_base
在使用任何libevent库函数之前,需要分配至少一个struct event_base的对象。每一个struct event_base对象都维护者一系列事件,并且能够轮询是是否有事件被激活。如果对event_base进行了加锁的保护,那么他可以被多线程访问,我们只需要在某一个线程中运行轮询。 但是如果我们需要各个线程都能进行自己IO轮询,那么就需要为每个线程分配一个event_base.每个eve翻译 2016-10-09 20:40:56 · 3729 阅读 · 0 评论 -
libevent学习笔记【使用篇】——DNS域名解析 evdns
Libevent 提供了一些用于解析DNS域名的API, 以及一些用于实现DNS Server的接口。可移植的阻塞型域名解析Libevent 提供了标准库函数getaddrinfo的可移植版本,用于让阻塞性域名解析应用于可移植程序。(毕竟有些平台并不支持getaddrinfo函数,或者该函数相对于libevent的替代接口表现更差)。struct evutil_addrinfo { int翻译 2016-09-26 17:27:18 · 7927 阅读 · 0 评论 -
libevent学习笔记【使用篇】——Connection listeners.md
libevent 提供了一种用于监听和接受TCP连接的便捷方式——evconnlistener机制创建和释放 evconnlistener 的接口下面接口用于创建和释放evconnlistener_new evconnlistener_bind_new evutil_make_socket_nonblocking LEV_OPT_CLOSE_ON_FREE原创 2016-09-21 17:05:37 · 1802 阅读 · 0 评论 -
libevent学习笔记【使用篇】——(零)异步IO简介
在使用任何libevent库函数之前,需要分配至少一个struct event_base的对象。每一个struct event_base对象都维护者一系列事件,并且能够轮询是是否有事件被激活。如果对event_base进行了加锁的保护,那么他可以被多线程访问,我们只需要在某一个线程中运行轮询。 但是如果我们需要各个线程都能进行自己IO轮询,那么就需要为每个线程分配一个event_base.每个eve翻译 2016-09-21 16:01:23 · 2774 阅读 · 0 评论 -
libevent学习笔记【使用篇】——9. Libevent和DNS解析
如果evutil_getaddrinfo解析成功了,则它会分配一个节点为evutil_addrinfo structures类型的链表res,从函数原型中, 不难看出,evdns_getaddrinfo的使用方法与其他使用回调函数实现非阻塞的函数类似的。其参数的作用可以参考阻塞型的evutil_getaddrinfo。 在使用evdns_getaddrinfo之前,我们需要先配置一个evdns_base用于保存nam翻译 2016-10-20 09:19:43 · 2847 阅读 · 0 评论