zoukankan      html  css  js  c++  java
  • 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))

    }

  • 相关阅读:
    oracle-PL/SQL1
    ROS之Gazebo
    ROS之urdf 2
    ROS之urdf 1
    ROS 面部识别
    ROS x Arduino
    STM32F0的低功耗模式
    项目进度
    C++函数返回为引用
    STM32F0的多路ADC 无DMA
  • 原文地址:https://www.cnblogs.com/moon-in-sky/p/4791069.html
Copyright © 2011-2022 走看看