libevent简介
libevent是一个事件驱动的网络库,支持跨平台,如Linux, *BSD, MacOS X, Solaris, Windows。支持I/O多路复用,epoll、poll、/dev/poll、select、kqueue等。
libevnet额外提供了一个缓冲网络I/O的高级框架,支持sockets, filters,rate-limiting, zero-copy file transmission, SSL和 IOCP。libevent还支持DNS,HTTP,RPC。
libevnet使用C语言编写,事件框架是典型的Reactor模式,支持I/O、定时器、信号事件。作为底层的网络库被广泛使用,如memcached。
Libevent构成
libevent由以下组件构成:
Evutil:用于抽象不同平台网络实现差异的通用功能。
Event:封装了fd,signal,事件处理函数。
Event_Base:管理所有的event。
Bufferevent:为Libevent基于事件的核心提供更方便的封装。
Evbuffer:在Bufferevent下层实现缓冲功能。
Evhttp:简单的http客户端、服务器。
Evdns:简单的DNS客户端、服务器。
Evrpc:简单的RPC。