简单的http server
使用libevent内置的http相关接口,可以很容易的构建一个http server,一个简单的http server如下:


通过libevent的接口构建一个http server的过程如下:
(1)初始化:在event_base上新建一个evhttp,将这个evhttp绑定到监听的ip和端口号。
(2)设置http回调函数:使用evhttp_set_gencb设置http server的处理请求的回调函数。
(3)启动http server:等待请求进入事件循环。
在http server中使用定时器提供更新服务


在这个http server中提供了一个每5秒触发一次的定时器,读取一个文件,如果这个文件被更新过,则读取更新后的内容。
当访问这个http server时,提供这个文件中最新的内容。
多线程的http server
在上面的http server中,处理http请求的回调函数generic_handler和定时器读取文件的回调函数read_file_timer_cb都在同一个event_base的dispatch中,并且都在同一个进程中,使用多线程可以改善程序的性能,下面是一个来自网络的多线程http server:


上面的代码基于libevent 1.x版本的,不过很容易很看懂:在一个监听socket上创建了多个event_base实例和evhttp实例,在不同的线程中调度不同的event_base,继而可以在不同的线程中处理http请求。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。