Libevent组件介绍
evutil
跨平台的网络编程函数功能的接口实现。
event and event_base
libevent后台实现的核心部分,它针对了各个平台,提供了基于事件的非阻塞I/O
这里的事件包括:读写事件、定时器事件、系统信号。
bufferevent
IO的缓冲机制,用户无需自己维护buffer
evbuffer
在bufferevent基础上实现的缓冲
evhttp
简单的http客户和服务端的实现
evdns
简单的dns客户和服务端的实现
evrpc
简单的rpc的实现
Libevent库和头文件
在libevent的安装目录下有lib和include,在写代码时如果用到头文件和库只需要在Makefile里面添加相关选项即可:
PROGS=echo \
epoll \
block_http_client
CLEANFILES = core core.* *.core *.o temp.* *.out typescript* \
*.lc *.lh *.bsdi *.sparc *.uw
LIBEVENT_DIRECTORY = /home/zhangxiao/libevent/src/src2
LIBEVENT_INCLUDE = $(LIBEVENT_DIRECTORY)/include
LIBEVENT_LIBRARY = $(LIBEVENT_DIRECTORY)/lib
SRC=${shell pwd}/src
OUTPUT:=${shell pwd}/bin
MAKE_BIN_DIR := ${shell mkdir -p $(OUTPUT) }
all : ${PROGS}
CFLAGS+=-g -I${LIBEVENT_INCLUDE}
LDFLAGS+=-L${LIBEVENT_LIBRARY} -levent -lpthread -lrt
echo:${SRC}/echo.o
@${CC} ${CFLAGS} -o ${OUTPUT}/$@ $^ ${LDFLAGS}
epoll:${SRC}/epoll.o
@${CC} ${CFLAGS} -o ${OUTPUT}/$@ $^ ${LDFLAGS}
block_http_client:${SRC}/block_http_client.o
@${CC} ${CFLAGS} -o ${OUTPUT}/$@ $^ ${LDFLAGS}
clean:
@rm -rf ${OUTPUT} \
@rm -rf ${SRC}/*.o
.PHONY: all clean
参考
Programming with Libevent