🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] # Libevent主要组成 libevent包括事件管理、缓存管理、DNS、HTTP、缓存事件几大部分。事件管理包括各种IO(socket)、定时器、信号等事件;缓存管理是指evbuffer功能;DNS是libevent提供的一个异步DNS查询功能;HTTP是libevent的一个轻量级http实现,包括服务器和客户端。libevent也支持ssl,这对于有安全需求的网络程序非常的重要,但是其支持不是很完善,比如http server的实现就不支持ssl。 # Libevent的核心实现 Reactor(反应堆)模式是libevent的核心框架,libevent以事件驱动,自动触发回调功能。之前介绍的epoll反应堆的源码,就是从libevent中抽取出来的。 安装libevent 官方网站: http://libevent.org 源码下载主要分2个大版本: 1. 1.4.x 系列,较为早期版本,适合源码学习 2. 2.x 系列,较新的版本,代码量比1.4版本多很多,功能也更完善。 源码包的安装,以2.0.22版本为例,在官网可以下载到源码包libevent-2.0.22-stable.tar.gz,基本安装步骤与第三方库源码包安装方式基本一致。 * 解压 * 执行配置./configure,生成makefile * make 和 `make install` # 验证 编译个简单的文件 ~~~ //01_getmethods.c #include <event.h> #include <stdio.h> int main() { char ** methods = event_get_supported_methods();//获取libevent后端支持的方法 int i =0; for(i = 0;methods[i] != NULL ;i++) { printf("%s\n",methods[i]); } return 0; } ~~~ 可以忽略该警告,代表编译完成 执行 同时也能看到libevent在当前主机上后端支持的多路IO方法。