Libevent
gqtcgq
这个作者很懒,什么都没留下…
展开
-
Libevent:0异步IO简介
一:异步IO简介 大多数的初级编程者都是从阻塞IO调用开始网络编程的。阻塞(同步)IO调用指的是:调用会一直阻塞,不会返回,直到发生下面两种情况之一。要么操作完成,要么经历相当长的时间,网络协议栈自己放弃。 比如,当在TCP连接上调用connect时,操作系统会发送SYN包到TCP的远端主机。connect会一直阻塞而不返回,直到它接收到了远端主机发来的SYN+ACK包,或者经翻译 2015-01-06 09:15:50 · 831 阅读 · 0 评论 -
Libevent:11使用Libevent的DNS上层和底层功能
Libevent提供了一些API用来进行DNS域名解析,并且提供了实现简单DNS服务器的能力。 本章首先描述域名解析的上层功能,然后介绍底层功能及服务器功能。 注意:Libevent的当前DNS客户端实现有一些限制,它不支持TCP查询,DNSSsec或者任意记录类型。将来的Libevent版本中可能会修复这些问题。 前言:可移植的阻塞型域名解析翻译 2015-02-28 09:28:29 · 2414 阅读 · 0 评论 -
Libevent:3创建event_base
在使用Libevent函数之前,需要分配一个或多个event_base结构。每一个event_base都持有一个events的集合,并且可以检测那些events是激活的。 如果设置event_base可以使用锁,那event_base是可以安全的在多线程环境中使用,但是,只能在单个的线程中进行event_base的loop。如果希望在多线程中进行IO轮询,那就需要每个线程都有一翻译 2015-01-18 19:11:29 · 1932 阅读 · 0 评论 -
Libevent:5events相关
Libevents的基本操作单元是event,每一个event代表了一些条件的集合,这些条件包括:文件描述符已经准备好读或写文件描述符正在变为就绪,准备好读或写(仅限于边沿触发)超时事件信号发生用户触发事件 events都有类似的生命周期。一旦调用Libevent函数创建好event,并将其关联到一个event_base之后,他就是“已初始化”状态(i翻译 2015-01-25 10:32:52 · 825 阅读 · 0 评论 -
Libevent:4event loop
一:运行loop 一旦一些events在event_base注册之后(下一节会讨论如何创建和注册events),就可以使Libevent等待events,并且在events准备好时能够通知你。#define EVLOOP_ONCE 0x01#define EVLOOP_NONBLOCK 0x02#define E翻译 2015-01-19 21:53:49 · 1918 阅读 · 0 评论 -
Libevent:6辅助函数以及类型
在头文件中定义了许多有用的函数和类型来帮助实现可移植的程序。Libevent在内部使用这些类型和函数。 一:基本类型evutil_socket_t 除了Windows之外的大多数系统,socket就是一个整数,而且操作系统按照数值顺序对它们进行处理。而在Windows socket API中,socket是SOCKET类型,该类型是一个类似于指针的OS句柄,而且得到翻译 2015-01-25 10:37:47 · 1019 阅读 · 0 评论 -
Libevent:9Evbuffers缓存IO的实用功能
Libevent的evbuffer功能实现了一个字节队列,优化了在队列尾端增加数据,以及从队列前端删除数据的操作。 Evbuffer用来实现缓存网络IO中的缓存部分。它们不能用来在条件发生时调度IO或者触发IO:这是bufferevent做的事情。 本章介绍的函数,除了特别注明的,都是在文件“event2/buffer.h”中声明。 一:创建或者释放ev翻译 2015-02-12 21:38:57 · 1777 阅读 · 0 评论 -
Libevent:7Bufferevents基本概念
很多时候,应用程序除了能响应事件之外,还希望能够处理一定量的数据缓存。比如,当写数据的时候,一般会经历下列步骤:l 决定向一个链接中写入一些数据;将数据放入缓冲区中;l 等待该链接变得可写;l 写入尽可能多的数据;l 记住写入的数据量,如果还有数据需要写入,则需要再次等待链接变得可写。 这种IO缓冲模式很常见,因此Libevent为翻译 2015-02-01 20:31:49 · 821 阅读 · 0 评论 -
Libevent:8Bufferevents高级主题
本章描述的是Libevent的bufferevent实现的一些高级特性,这对于普通应用来说并非必须的。如果你只是学习如何使用bufferevent,则应该跳过本章去阅读evbuffer的章节。 一:成对的bufferevent 有时,网络程序可能需要与自己本身进行对话。比如,某个程序用来在某些协议之上进行隧道用户链接,而有时它需要在这种协议之上,隧道与自己的连接。当然,这可翻译 2015-02-01 20:31:01 · 4689 阅读 · 1 评论 -
Libevent:1前言
一:libevent概述:libevent是一个用来编写快速、可移植、非阻塞IO程序的库,它的设计目标是:可移植性、高效、可扩展性、便捷。 libevent包含下列组件:evutil:对不同平台下的网络实现的差异进行抽象;event、event_base:libevent的核心。为各种平台特定的、基于事件的非阻塞IO后端提供抽象API,让程序可以知道套接字何时已经准备好读或写,转载 2015-01-06 16:52:25 · 528 阅读 · 0 评论 -
Libevent:2设置
Libevent有一些整个进程共享的全局设置。这些设置会影响到整个的库。因此必须在调用Libevent其他函数之前进行设置,否则,LIbevent就会陷入不一致的状态。 一:Libevent中的日志信息 Libevent可以记录内部的error和warning信息,而且如果在编译时设置的话,它还可以记录debug消息。默认情况下,这些信息都会写到stderr中。可以通过翻译 2015-01-08 17:17:32 · 697 阅读 · 0 评论 -
Lib1vent:10链接监听器接受TCP链接
evconnlistener机制提供了监听并接受TCP链接的方法。除非特别注明,本章的所有函数和类型都在event2/listener.h中声明。 一:创建或释放evconnlistenerstruct evconnlistener *evconnlistener_new(struct event_base *base, evconnlistener_cb cb,翻译 2015-02-13 20:59:42 · 872 阅读 · 0 评论