libevent笔记6:ssl bufferevent】的更多相关文章

Libevent另外提供了基于openssl的bufferevent来支持ssl,通过特殊的ssl bufferevent来对数据进行加密. ps:本文不对openssl相应的接口做介绍因为不熟 SSL bufferevent相关函数 struct bufferevent bufferevent_openssl_socket_new(struct event_base base, evutil_socket_t fd, struct ssl_st *ssl, enum bufferevent_s…
转自:http://name5566.com/4215.html 参考文献列表:http://www.wangafu.net/~nickm/libevent-book/ 此文编写的时候,使用到的 Libevent 为 2.0.21 Buffer IO 模式 bufferevent 提供给我们一种 Buffer IO 模式(这里以写入数据为例): 在我们需要通过某个连接发送数据的时候,先将等待发送的数据放入到一个 buffer 中 等待此连接可以写入数据 尽可能多的获取 buffer 中的数据写入…
1. 每个bufferevent 都拥有类型为struct evbuffer的input buffer和out buffer,分别供数据读取和数据写入使用. 2.读取和写入数据是通过编写和设置对应的回调函数进行,而调用回调函数的时机则根据水位是否满足来的,水位又是可以设置的.默认情况下读的低水位是0,就是说libevent从底层读到大于0的数据到input buffer中,读回调函数就会调用,读回调函数读取input buffer的数据:同样默认的写水位也为0,就是说一旦output buffe…
bufferevent中提供了对读写回调的触发条件及最大缓存长度的设置,即低高水位: 低水位:是读写回调函数的最低触发数据长度,当输入/输出缓存区中的数据长度小于低水位时,读/写回调函数不会被触发: 高水位:是缓存区的最大接收长度,当输入/输出缓存区中的数据长度大于高水位时,不会继续向缓存区中增加数据. 水位设置函数bufferevent_setwatermark void bufferevent_setwatermark (struct bufferevent *bufev, short ev…
Filter_bufferevent是一种基于bufferevent的过滤器,其本身也是一个bufferevent.能够对底层bufferevent输入缓存区中的数据进行操作(加/解密等)后再读取,同样也能在一定的操作后再将数据写入底层bufferevent的输出缓存区.需要注意的是,在创建Filter_bufferevent后,底层bufferevent的读写回调函数就不会再生效了,而缓存区的回调函数依旧有效. Filter_bufferevent相关函数 struct bufferevent…
evbuffer 之前提到bufferevent结构体提供两个缓存区用来为读写提供缓存,并自动进行IO操作.这两个缓存区是使用Libevent中的evbuffer实现的,同样,Libevent中也提供了相应的函数让我们能够直接操作evbuffer. evbuffer的回调函数及evbuffer_cb_info结构体 我们可以为一个evbuffer增加回调函数,回调函数会在evbuffer长度有变化时被调用.evbuffer的回调函数列表中有一个evbuffer_cb_info结构体,可以用它来判…
本篇通过libevent提供的Hello_World demo简单介绍基于libevent的TCP服务器的实现 listener listener是libevent提供的一种监听本地端口的数据结构,在有客户端的连接到来时调用给定的回调函数. bufferevent 上一篇中的event是不带缓存区的,读写直接在文件描述符所指向的对象(上一节中是有名管道)上进行.bufferent则是带缓冲区的event,对bufferevnet的读写操作不会直接作用在I/O上,而是对输入或输出缓存区操作.对bu…
一. SSL 1. SSL简介 SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持.SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装.压缩.加密等基本功能的支持. SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证.协商加密算法.交换加密密钥等. SSL协议提供的服务主要有:1)认证用户和…
本篇简单记录了libevent的安装过程及基础的先进先出管道Demo,其中demo来自这篇博客,安装过程在这篇博客 实验环境 系统:Ubuntu 18.04.3 libevent版本:libevent-2.1.11-stable libevent安装 从libevent官网下载压缩包并解压: 进入libevent目录,依次执行: sunminming@sunminming:~/libevent-2.1.11-stable$ ./configure sunminming@sunminming:~/…
libevent中提供了一个Hello-world.c 的例子,从这个例子可以学习libevent是如何使用bufferevent的. 这个例子在Sample中 这个例子之前讲解过,这次主要看下bufferevent的使用. 第一步找到main函数 main函数 int main(){ //...listener = evconnlistener_new_bind(base, listener_cb, (void *)base, LEV_OPT_REUSEABLE|LEV_OPT_CLOSE_O…