libevent HTTP client 的实现

        my_conn_ = evhttp_connection_base_new(ev_base_,ev_dns_,host,port);
 47
 48
 49
 50         struct evhttp_request *http_req;
 51         http_req = evhttp_request_new(rspCallback,(void *)arg);                        //rspCallback接收消息
 52         struct evkeyvalq *head = evhttp_request_get_output_headers(http_req);
 53
 55         evhttp_add_header(head,"User-Agent","My Device");
 56         evhttp_add_header(head,"Connection","Keep-Alive");
 57         char buf[16];
 58         snprintf(buf,15,"%d",req.terminaltype);
 59         evhttp_add_header(head,"terminaltype",buf);
 60         evhttp_add_header(head,"versioninfo",req.version_info.c_str());
 61         evhttp_add_header(head,"osinfo",req.osinfo.c_str());
 62         evhttp_add_header(head,"despasswd",req.despasswd.c_str());
 63
 66         evhttp_add_header(head,"Host",host);
 67
 68         int ret = evhttp_make_request(my_conn_,http_req,EVHTTP_REQ_PUT,"/myurl");
 69         evhttp_uri_free(uri);                       
时间: 2025-01-17 21:10:02

libevent HTTP client 的实现的相关文章

libevent基础:用libevent写服务端server程序和客户端client程序

最近在进行一个基于libevent的项目,需要对libevent在socket通讯上的性能进行测试,写了这个简易的server和client程序,这也是libevent的基础,希望对大家了解libevent有所帮助. 使用libevent-2.0.21. server.c /************************************ * For msmr * server.c * tesing the speed of bufferevent_write * 2015-02-03

1 Linux 安装 Libevent

Libevent官网:http://libevent.org/ 在线文档:http://www.wangafu.net/~nickm/libevent-2.0/doxygen/html/ 下载地址:https://github.com/libevent/libevent/releases/ 解压,编译,安装 创建文件夹 [email protected]:~$ mkdir libevent [email protected]:~$ cd libevent/ 解压文件: [email protec

浅谈libevent的使用--事件和数据缓冲

首先在学习libevent库的使用前,我们还要从基本的了解开始,已经熟悉了epoll以及reactor,然后从event_base学习,依次学习事件event.数据缓冲Bufferevent和数据封装evBuffer等,再结合具体的几个实例来了解libevent库的一些基本使用,有助于我们理解它的一些内部实现(由于之前我已经写过一篇epoll反应堆模型的,所以这里就不再介绍,直接从event_base开始介绍). libevent下载与安装: 在官网上找到 libevent-2.0.22-sta

libevent源码分析-TCP服务端代码

先贴一段代码再说,Linux下使用g++ -g-o server server.c -levent 可以直接使用gdb调试,而且可以跟踪到libevent的库里. 1 #include <stdio.h> 2 #include <string.h> 3 #include <iostream> 4 #include <sys/socket.h> 5 #include <netinet/in.h> 6 #include <arpa/inet.h

Libevent核心原理

原创,请注明出处:http://www.cnblogs.com/stonehat/p/6286235.html Libevent 是一个事件驱动框架, 不能仅说他是一个网络库. notejs就是采用与libevent类似的libev来做核心驱动的. Libevent支持三种事件:io事件.信号事件.时间事件,并且事件的设置和使用方式是一样的. libevent的核心原理是采用io多路复用的方式来单线程处理事件.至于为什么这么说,下面会分别对三种事件进行解释. io事件: io事件包含socket

Windows下libevent C++封装类实现

题记 windows平台下对于服务器高并发的网络模型选型中,使用libevent是个不错的选择. 本文的背景基于:国内博客对于libevent大多介绍linux实现,大多是c语言的实现,Windows平台下C++相对较少或者较旧. 本文针对libevent从服务端.客户端两个角度实现了封装类,真正做到,我们在使用封装类时候,只需要关注业务逻辑的处理,不需要关注socket的通信的细节. 1. Libevent介绍 [维基百科]libevent是一个异步事件处理软件函式库,以BSD许可证发布.li

[libevent]Libevent介绍与编译

libevent介绍 libevent是一个轻量级的,开源高性能的,基于事件触发的网络库,适用于windows.linux.bsd等多种平台,内部使用select.epoll.kqueue等系统调用管理事件机制. 编译库代码,编译脚本会判断OS支持哪种类型的事件机制(select.epoll或kqueue),然后条件编译相应代码,供上层使用的接口仍然是保持统一的. 有许多开源项目使用libevent,例如memcached.使用libevent,使得memcached可以适应多种操作系统.Lib

使用libevent进行多线程socket编程demo

最近要对一个用libevent写的C/C++项目进行修改,要改成多线程的,故做了一些学习和研究. libevent是一个用C语言写的开源的一个库.它对socket编程里的epoll/select等功能进行了封装,并且使用了一些设计模式(比如反应堆模式),用事件机制来简化了socket编程.libevent的好处网上有很多,但是初学者往往都看不懂.我打个比方吧,1)假设有N个客户端同时往服务端通过socket写数据,用了libevent之后,你的server程序里就不用再使用epoll或是sele

libevent学习七

Bufferevents:概念和基础 很多时候,一个程序需要处理一些数据的缓存,不止应用在答复event上.例如:当我们需要去写出数据,通常会这样做: 1. 发现有数据需要写出到一条连接上:把这些数据放到buffer里. 2. 等连接变成可写的状态. 3. 尽可能的写入数据. 4. 记住我们写了多少数据,然后如果数据没有全部写完,就等连接再次变为可写的状态. 这种IO缓冲模式已经足够Libevent的日常使用.一个"bufferevent"是由一个底层传输渠道(如socket),一个读