介绍
libevent是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue、 IOCP等系统调用管理事件机制。著名分布式缓存软件memcached也是基于libevent,而且libevent在使用上可以做到跨平台,而且根 据libevent官方网站上公布的数据统计,似乎也有着非凡的性能。
主要组成
libevent包括事件管理、缓存管理、DNS、HTTP、缓存事件几大部分。事件管理包括各种IO(socket)、定时器、信号等事件;缓存管理是 指evbuffer功能;DNS是libevent提供的一个异步DNS查询功能;HTTP是libevent的一个轻量级http实现,包括服务器和客 户端。libevent也支持ssl,这对于有安全需求的网络程序非常的重要,但是其支持不是很完善,比如http server的实现就不支持ssl。
个人观点
小巧且功能强大,本人下载2.0.22版本,体积855.0 kB,编译安装完后,再打包,体积1.9M,比起java来说,这实在是太浓缩了。
环境
系统:Linux Min-Mate 17.2 32bit
IDE: Eclipse IDE for C/C++ Developers Version: Mars.1 Release (4.5.1)
GCC:gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04)
第一步
下载并解压libevent-2.0.22-stable.tar.gz
cd libevent-2.0.22-stable
./configure --prefix=/home/lyb/lib (实际目录自己定义去)
make
make install
至此安装完毕,可进入/home/lyb/lib目录下查看
第二步
配置环境变量LD_LIBRARY_PATH
用户目录下
vi .profile (当然也可以修改/etc/profile)
增加如下代码
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/lyb/lib/libevent/lib
配置完毕后,就可以开始打开Eclipse构建自己工程了。
第三步
打开Eclipse CDT
新建工程后,按照下图添加Include 和 链接库
右键项目名称,Properties
完毕后,新建main.c,代码如下
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <event.h> #include <evhttp.h> void reqHandler(struct evhttp_request *req,void *arg) { struct evbuffer *buf = evbuffer_new(); // 发送响应 evbuffer_add_printf(buf, "Thanks for the request"); evhttp_send_reply(req,HTTP_OK,"Client",buf); evbuffer_free(buf); return; } int main(int argc,char **argv) { short port = 8000; const char *addr = "192.168.0.119"; struct evhttp *httpserv = NULL; event_init(); // 启动http服务 httpserv = evhttp_start(addr,port); // 设置回调 evhttp_set_gencb(httpserv, reqHandler,NULL); printf("Server started on port %d\n",port); event_dispatch(); return 0; }
构建,然后执行,打开浏览器访问即可看到
至此已经使用libevent完成了一个简单的HttpServer的构建,至于如何实现类似Java Servlet的功能呢?
无非就是路径拦截,映射函数,调用执行罢了。
相关推荐
libevent安装文件及方法,带libevent-1.4.13-stable.tar.gz
libevent2.1.7在Linux安装过程
libevent是一个事件触发的网络库libevent是一个事件触发的网络库,适用于windows、linux、bsd等多种平台。
fastdfs离线安装,包含gcc离线安装和libevent离线安装
memcached版本:memcached-1.5.2.tar.gz libevent版本:libevent-2.0.22-stable.tar.gz 依赖包:java_memcached-release_2.6.3.jar等
libevent的源码工程,以及两个demo
安装 PHP libevent模块、、、
基于libevent的tcp server开发环境的完整工程
libevent库的安装(linux和windows)相关和测试代码libevent_test.cpp
前段时间看了下libevent的文档,把代码搞过来看了一下,做了一个vs的工程,花了一两个小时。免得下次又弄这些无谓的工作,上传到共享里。有需要的朋友也可以省点时间。工程是vs2008的,到其他版本也是可以使用的。
libevent源码及库文件
libevent参考手册(中文版),包含libevent的设计说明、原理描述,模块介绍和接口说明。
memcached安装软件 libevent-2.0.21-stable.tar.gz magent.tar.gz memcached-1.4.15.tar.gz
VS2003使用libevent库实现的httpd范例工程
libevent的helloworld实例,包括安装程序和代码
最新的libevent中文参考手册; Libevent 是用于编写高速可移植非阻塞 IO 应用的库,其设计目标是: 可移植性:使用 libevent 编写的程序应该可以在 libevent 支持的所有平台上工作。即使 没有好的方式进行非阻塞 IO...
从libevent原始项目中扣取代码,整理成vs工程,方便在windows环境下调试。
首先vs2013打开build文件夹下的libevent.sln,然后解决方案右键选择"重新生成解决方案"即可成功编译两个工程,将testPro工程作为启动项后就可以单步跟踪libevent的代码了。因为为了调试查看代码,所以解决方案只在...
libevent book 必备参考资料,方便学习libevent网络库
qt_eventdispatcher_libevent 是基于 Libevent 的 Qt 事件调度器 特点 非常快速 支持Qt4和Qt5 不需要Qt的私有头文件 通过Qt4 和 Qt5 的事件调度,事件循环,...