简单的html静态网页使用libevent

来源:互联网 发布:淘宝女装分类宝贝图片 编辑:程序博客网 时间:2024/05/16 16:17
/*************************************************************************> File Name: http_server.cpp> Author: 参考网上大神的博客> Mail: > Created Time: 2017年10月13日 星期五 15时33分16秒 ************************************************************************/#include<iostream>using namespace std;#include <event2/event.h>#include <event2/buffer.h>#include <event2/http.h>#include <cstring>bool startHttpServer(const char* ip, int port, void (*cb)(struct evhttp_request*, void *), void *arg){    //创建event_base和evhttp    event_base *base = event_base_new();    evhttp* http_server = evhttp_new(base);    if(!http_server)    {        return false;    }    //绑定到指定地址上    int ret = evhttp_bind_socket(http_server, ip, port & 0xFFFF);    if(ret != 0)    {        return false;    }    //设置事件处理函数    evhttp_set_gencb(http_server, cb, arg);    //启动事件循环,当有http请求的时候会调用指定的回调    event_base_dispatch(base);    evhttp_free(http_server);    return true;}void MyHttpServerHandler(struct evhttp_request* req, void* arg){    //创建要使用的buffer对象    evbuffer* buf = evbuffer_new();    if(!buf) return;    //获取请求的URI    const char* uri = (char*)evhttp_request_get_uri(req);    //添加对应的HTTP代码    evbuffer_add_printf(buf, "<html>");    evbuffer_add_printf(buf, "<head><title>MyHttpServer</title></head>");    evbuffer_add_printf(buf, "<body>");    //根据不同的URI显示不同的页面    if(strcmp(uri, "/") == 0){        evbuffer_add_printf(buf, "<p>Welcom to my http server</p>");    }    else if(strcmp(uri, "/about") == 0){        evbuffer_add_printf(buf, "<p>I love C++</p>");    }    evbuffer_add_printf(buf, "</body>");    evbuffer_add_printf(buf, "</html>");    //回复给客户端    evhttp_send_reply(req, HTTP_OK, "OK", buf);    evbuffer_free(buf);}int main(int argc, char** argv){    startHttpServer("127.0.0.1", 9000, MyHttpServerHandler, NULL);    return 0;}

用libevent做的一个简单的http server,

编译:

g++ http_server.cpp -o http_server -levent
打开浏览器,输入127.0.0.1:9000,页面显示 Welcome to my http server

输入127.0.0.1:9000/about,页面显示I love C++


原创粉丝点击