libevent–开发环境搭建
Libevent 是用于编写高速可移植非阻塞 IO 应用的库。
1.libevent包含组件
a.evutil:用于抽象不同平台网络实现差异的通用功能。比如window 的socket,需先初始化WSAStartup,最后WSACleanup清除相关协议。linux中没有这些函数。
b.event 和 event_base: libevent 的核心。
c.bufferevent: 为 libevent 基于事件的核心提供使用更方便的封装。
d.evbuffer:在 bufferevent 层之下实现了缓冲功能,并且提供了方便有效的访问函数 。
e.evhttp:一个简单的 HTTP 客户端/服务器实现。
f.evdns:一个简单的 DNS 客户端/服务器实现 。
g.evrpc:一个简单的 RPC 实现 。
2.libevent安装
下载地址: http://libevent.org/
1.下载源码
2.解压文件: tar -zxvf libevent-2.1.12-stable.tar.gz
3.配置: ./configure
4.编译: make
5.安装: [sudo] make install
安装完成后在/usr/local/lib可以看到安装的库与头文件。
A》ls /usr/local/lib/libevent*
libevent-2.1.so.7 libevent.la
libevent-2.1.so.7.0.1 libevent_openssl-2.1.so.7
libevent.a libevent_openssl-2.1.so.7.0.1
libevent_core-2.1.so.7 libevent_openssl.a
libevent_core-2.1.so.7.0.1 libevent_openssl.la
libevent_core.a libevent_openssl.so
libevent_core.la libevent_pthreads-2.1.so.7
libevent_core.so libevent_pthreads-2.1.so.7.0.1
libevent_extra-2.1.so.7 libevent_pthreads.a
libevent_extra-2.1.so.7.0.1 libevent_pthreads.la
libevent_extra.a libevent_pthreads.so
libevent_extra.la libevent.so
libevent_extra.so
B》ls /usr/local/include/ev*
evdns.h event.h evhttp.h evrpc.h evutil.h
event2:
buffer_compat.h dns.h http.h tag_compat.h
bufferevent_compat.h dns_struct.h http_struct.h tag.h
bufferevent.h event_compat.h keyvalq_struct.h thread.h
bufferevent_ssl.h event-config.h listener.h util.h
bufferevent_struct.h event.h rpc_compat.h visibility.h
buffer.h event_struct.h rpc.h
dns_compat.h http_compat.h rpc_struct.h
这些库各自有什么用途:
1.libevent_core:所有核心的事件和缓冲功能,包含了所有的 event_base、 evbuffer、 bufferevent 和工具函数 .
2.libevent_extra:定义了程序可能需要,也可能不需要的协议特定功能,包括 HTTP、 DNS 和 RPC。
3.libevent: 这个库因为历史原因而存在, 它包含 libevent_core 和 libevent_extra 的内容。 不应该使用这个库,未来版本的 libevent 可能去掉这个库。
4.libevent_pthreads:添加基于 pthread 可移植线程库的线程和锁定实现。
5.libevent_openssl:这个库为使用 bufferevent 和 OpenSSL 进行加密的通信提供支持。
3.基于Qt开发环境配置libevent库
在pro增加以下两句:
LIBS += /usr/local/lib/libevent_core.so \
/usr/local/lib/libevent_extra.so
INCLUDEPATH += /usr/local/include