libevent网络库基础知识总结和代码实例(2)

bufferevent filter

相当于是一个数据传输中间件

创建过滤器

bufferevent *bev_filter = bufferevent_filter_new(
	bev,
	filter_in, // 输入过滤函数
	filter_out, // 输出过滤函数 	
	BEV_OPT_CLOSE_ON_FREE,// 关闭filter是同时关闭bufferevent 
	0, // 清理的回调函数
	0, // 传递给回调的参数
);

过滤函数

bufferevent_filter_result filter_in(evbuffer *s, evbuffer *d, ev_ssize_t, limit, bufferevent_flush_mode mode, void *arg) {
    
    
	return BEV_OK;
	// 读取并清理数据
	char data[1024] = {
    
    0};
	// 读取并清理缓冲区
	int len = evbuffer_remove(s, data, sizeof(data) - 1);
	
	/** 此处进行数据处理
	*/
	
	// 传输数据给read函数,这里相当于新建了一块缓冲区
	evbuffer_add(d, data, len);
}

zlib压缩

实战案例

libevent线程池(C++)
FTP服务器

Guess you like

Origin blog.csdn.net/qq_48322523/article/details/121092667