• 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))

    }

  • 相关阅读:
    jmeter-plugins-manager安装
    JMeter安装
    charles
    url地址有哪些组成?
    服务器的响应状态码
    jQuery链式编程
    jQuery 实现单选反选以及三元运算
    jQuery选择器的基本和层级
    将jmeter返回的json数据转码
    DOM的事件
  • 原文地址:https://www.cnblogs.com/moon-in-sky/p/4791069.html
Copyright © 2020-2023  润新知