libevevnt-http客户端和服务器端常用函数

news/2024/7/6 0:10:49

官网文档

libevevnt-http客户端

evbuffer

请求超时的正确打开姿势 -美图大佬

1.客户端相关接口

index函数原型函数的作用
1
2

void evhttp_connection_set_closecb(       struct evhttp_connection* evcon,void(*)(struct evhttp_connection*, void* ),void*

);

 设置一个连接关闭的回调

3char* evhttp_decode_uri( const char* uri );解码URI,返回值必须自己释放掉
4char* evhttp_encode_uri( const char* uri)编码URI,返回值需要释放
5char* evhttp_htmlescape( const char* html )忽略html的字符
6void evhttp_parse_query(   const char* uri,struct evkeyvalq*)解析请求里的参数
7struct evhttp_request_free( struct evhttp_request* req )释放http请求
8void evhttp_set_time_out ( struct evhttp*,int timeout_in_sec);设置HTTP请求超时时间
9


void evhttp_request_set_header_cb (struct evhttp_request *, int(*cb)(struct evhttp_request *, void *))

设置回调函数,在包头读取完成后回调
10void evhttp_request_set_chunked_cb (struct evhttp_request *, void(*cb)(struct evhttp_request *, void *))设置回调函数,在body有数据返回后回调
11struct evhttp_request* evhttp_request_new(    void(*)(struct evhttp_request*, void*)cb,void* arg ); 参数中的回调函数在完成一个请求的时候或者发生错误时调用
12

evhttp_request_get_output_headers

获取请求的header
13int evhttp_add_header(struct evkeyvalq *headers, const char *key, const char *value);有选择的向evhttp_request添加包头字段

2.服务器端相关接口

index
1int evhttp_accept_socket(struct evhttp* http, int    fd);

使HTTP服务器在指定端口上接受连接。

可以多次调用使server监听多个不同的socket

int evhttp_bind_socket( struct evhttp* http,const char*  address,u_short      port);给服务器绑定一个指定的地址和端口
void evhttp_free( struct evhttp* hrttp );释放创建的HTTP server
struct evhttp* evhttp_start( const char* address, u_short    port);在指定的地址和端口上启动一个HTTP服务器
void evhttp_set_cb(     struct evhttp*,const char*,void(*)(struct evhttp_request* , void*),void* ) 给指定的URI设置的回调
void evhttp_set_gencb( struct evhttp*,const char*,void(*)(struct evhttp_request* , void*),void* )       给所有的请求(不包含上面的特定回调的)设置的回调函数
9void evhttp_send_error ( struct evhttp_request* req,int error,const char* reason);

 发送一个html错误消息给客户端

error:  http错误码

reason:错误的简单描述

10void evhttp_send_reply( struct evhttp_request* req,int code,const char* reason,struct evbuffer* databuf)

     发送一个html回复给客户端

       code       : HTTP返回码

       reason    : 返回码的消息

       databuf  : 返回内容的body部分

1struct evhttp* evhttp_new(struct event_base* base)创建一个新的HTTP server


 


 


http://www.niftyadmin.cn/n/2891609.html

相关文章

ExtJS实战(1)-准备工作和界面赏析

我们这次实战的项目是一个房屋出租系统,重点是房屋信息的管理。主要功能包括用户的登陆,房屋信息的发布,编辑,删除,复杂查询以及数据的分页显示和排序等。为了便于大家下载测试,我们这里就使用SQLServer 20…

if特殊用法

if特殊用法 [ -z "$a" ] 表示变量a的值是否为空时,会怎么样[ -n "$a" ] 表示变量a的值不为空时,会怎么样! -z -n! -n -z建议,写这两个的时候,都加上双引号[ -n "$a" ] 表示变量a的值不为空时&…

ExtJS实战(2)-hibernate

现在我们已经看过了主要项目截图,并且利用MyEclipse加入了SSH的支持和其它框架的JAR包,搭建好了我们的应用环境。(这里因为MyEclipse自动导入的各个框架的包会存在版本冲突,所以我们建议只加入MyEclipse对各大框架的支持&#xff…

如何实现ArrayList排序

2019独角兽企业重金招聘Python工程师标准>>> package mianshi;import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List;/*** description* * author shilvfei* * date 2018年4月28日*/ public class Array…

shell将某个命令重复执行多次

1.方法1 for ((i1; i<100; i)) doecho $i donefor ((i1; i<100; i)); do curl -d {"id":"123456","filename":"111.zip"} http://127.0.0.1:9090/ss/dd/ff/sss; done 2.方法2 for i in {1..100} doecho $i done

2018北京交通大学区块链技术讲座

BC Spark致力于推进区块链技术和开源运动的融合&#xff0c;以一流高校为核心&#xff0c;建立起具有全球影响力的开发者社区。为了加深技术人才对区块链技术的了解和参与度&#xff0c;「北京交通大学软件学院」联合「BC Spark社区」「链得得」&#xff0c;发起「2018北京交通…

Iterator在ArrayList中的源码实现

2019独角兽企业重金招聘Python工程师标准>>> 获取迭代器 List<LinkedHashMap> list new ArrayList<>();Iterator iterator list.iterator();iterator()方法实现 public Iterator<E> iterator() {return new Itr();}Itr 源码 /*** An optimized …

List如何正确地在遍历时删除元素-EFFECTIVE STL 9

std::list::remove_if 遍历时删除元素的正确写法&#xff1a; list<int> l; for (list<int>::iterator iterl.begin();iter!l.end;) {if (condition (*iter) 0 ){iterl.erase(iter); // 注意此处要用iter接受l.erase(iter)的返回值}else{iter;} } 删除头部第一…