libevhtp,并没有拼写错误,是一个在libevent基础开发的高性能、高易用的http server开源库。
也属偶然, 我发现它也是正好我将evhttp打成evhtp。
经过了解发现关于evhtp的资料还是挺少的,下面链接是找到的两篇关于libevhtp安装及使用的文章。
http://blog.t41.cn/index.php/archives/574
感谢前人的分享。
我下本文主要是记录我对libevhtp使用,希望能帮到像我这样对libevhtp有兴趣的朋友。
操作系统:CentOS-6.2-x86_64-minimal
1. 自动安装依赖库
-
#工具
-
yum -y install gcc gcc-c++ autoconf automake make
-
#依赖库
-
yum -y install openssl-devel
2. 创建测试目录
3. 编译安装cmake(libevhtp要求版本大于2.8,自动安装版本不符合要求)
版本:cmake-2.8.11.2.tar.gz
下载地址:
默认安装即可。
-
tar xf cmake-2.8.11.2.tar.gz
-
cd cmake-2.8.11.2
-
./bootstrap
-
make
-
make install
4. 编译libevent
个人原因只使用静态库。
-
tar xf libevent-2.0.21-stable.tar.gz
-
cd libevent-2.0.21-stable
-
./configure --disable-shared --prefix=/opt/local
-
make
-
make install
5. 编译libevhtp
版本:
1.2.6
下载地址:
-
tar xf libevhtp-1.2.6.tar.gz
-
cd libevhtp-1.2.6
-
cmake -DCMAKE_PREFIX_PATH=/opt/local -DCMAKE_INSTALL_PREFIX=/opt/local .
-
make
-
make install
4. 使用测试
-
// file name: htp_test.c
-
//
-
-
#include <stdio.h>
-
#include <stdlib.h>
-
#include <string.h>
-
#include <stdint.h>
-
#include <errno.h>
-
-
#include <evhtp.h>
-
-
void
-
testcb(evhtp_request_t * req, void * a);
-
-
void
-
testcb(evhtp_request_t * req, void * a) {
-
evbuffer_add_reference(req->buffer_out, "foobar", 6, NULL, NULL);
-
evhtp_send_reply(req, EVHTP_RES_OK);
-
}
-
-
int main (int argc, const char * argv[])
-
{
-
evbase_t *evbase = event_base_new();
-
evhtp_t *htp = evhtp_new(evbase, NULL);
-
-
evhtp_set_cb(htp, "/", testcb, NULL); /* 设置回调函数 */
-
evhtp_use_threads(htp, NULL, 4, NULL); /* 设置4个线程 */
-
-
/* 监听本地所有IP的8080端口, backlog为1024 */
-
evhtp_bind_socket(htp, "0.0.0.0", 8080, 1024);
-
-
/* 进入循环、监听连接,http server开始工作 */
-
event_base_loop(evbase, 0);
-
-
return 0;
-
}
编译:
gcc -o test -I/opt/local/include -L/opt/local/lib htp_test.c /opt/local/lib/libevhtp.a -levent -levent_openssl -levent_pthreads -lssl -lcrypto -levhtp -ldl -lrt
阅读(7510) | 评论(0) | 转发(0) |