• libevent的使用


    相关api:

    1.// 启动libevent

    event_base* m_base=NULL;

    m_base = event_base_new();

    2.创建http服务

    evhttp* m_httpServer=NULL;

    m_httpServer = evhttp_new(m_base);

    3.绑定http服务的地址跟端口,可以重复调用,绑定多个端口

    int ret = evhttp_bind_socket(m_httpServer, host, port);

    4.设置回调,当http服务接收到请求的时候调用

    void CGMThread::generic_handler(struct evhttp_request *req, void *arg);

    evhttp_set_gencb(m_httpServer, &CGMThread::generic_handler, NULL);

    5.回调处理,因为http服务是在另一个线程中,所以接收到请求,如果会修改数据,应该构造对象丢到逻辑线程里统一处理。

    {

    /** Returns the request URI */
    const char *evhttp_request_get_uri(const struct evhttp_request *req);

    获取输入数据,然后解析

    // 获取http body,解析到json对象
    evbuffer* bodyBuffer = evhttp_request_get_input_buffer(m_req);
    size_t bodyLen = evbuffer_get_length(bodyBuffer);
    unsigned char* body = evbuffer_pullup(bodyBuffer, bodyLen);

    // 解析json
    Json::Value reqJson(Json::objectValue);
    Json::Reader reader;

    if(!reader.parse((char*)data, (char*)data+datal, reqJson))

    }

  • 相关阅读:
    css3 画小蜜蜂
    css3 绘制书本
    JavaScript 封装插件学习笔记(一)
    Jquery 多行拖拽图片排序 jq优化
    可输入式下拉框
    竖向展开式菜单
    checkbox 全选或取消
    JQuery.lazyload 图片延迟加载
    轻量级弹出框 lightbox
    onoffswitch-checkbox
  • 原文地址:https://www.cnblogs.com/moon-in-sky/p/4791069.html
Copyright © 2020-2023  润新知