转自:http://name5566.com/4202.html

参考文献列表:
http://www.wangafu.net/~nickm/libevent-book/

此文编写的时候,使用到的 Libevent 为 2.0.21

常用基本数据类型

  1. evutil_socket_t 用于保存 socket
  2. ev_uint64_t 取值范围 [0, EV_UINT64_MAX]
  3. ev_int64_t 取值范围 [EV_INT64_MIN, EV_INT64_MAX]
  4. ev_uint32_t 取值范围 [0, EV_UINT32_MAX]
  5. ev_int32_t 取值范围 [EV_INT32_MIN, EV_INT32_MAX]
  6. ev_uint16_t 取值范围 [0, EV_UINT16_MAX]
  7. ev_int16_t 取值范围 [EV_INT16_MIN, EV_INT16_MAX]
  8. ev_uint8_t 取值范围 [0, EV_UINT8_MAX]
  9. ev_int8_t 取值范围 [EV_INT8_MIN, EV_INT8_MAX]
  10. ev_ssize_type(signed size_t)取值范围 [EV_SSIZE_MIN, EV_SSIZE_MAX]

时间相关

  1. // 用于加或者减前两个参数,结果被保存在第三个参数中
  2. #define evutil_timeradd(tvp, uvp, vvp) /* ... */
  3. #define evutil_timersub(tvp, uvp, vvp) /* ... */
  4. // 清除 timeval 将其值设置为 0
  5. #define evutil_timerclear(tvp) /* ... */
  6. // 判断 timeval 是否为 0,如果是 0 返回 false,否则返回 true
  7. #define evutil_timerisset(tvp) /* ... */
  8. // 比较两个 timeval
  9. // 使用的时候这样用:
  10. // evutil_timercmp(t1, t2, <=) 含义为判断 t1 <= t2 是否成立
  11. // cmp 为所有的 C 关系操作符
  12. #define evutil_timercmp(tvp, uvp, cmp)
  13. // 获取当前时间并保存到 tv
  14. // tz 目前无用
  15. int evutil_gettimeofday(struct timeval *tv, struct timezone *tz);

Socket API

  1. // 用于关闭一个 socket
  2. int evutil_closesocket(evutil_socket_t s);
  3. #define EVUTIL_CLOSESOCKET(s) evutil_closesocket(s)
  4. // 返回当前线程的最后一次 socket 操作的错误码
  5. #define EVUTIL_SOCKET_ERROR()
  6. // 改变当前 socket 的错误码
  7. #define EVUTIL_SET_SOCKET_ERROR(errcode)
  8. // 返回特定的 sock 的错误码
  9. #define evutil_socket_geterror(sock)
  10. // 通过 socket 错误码获取到一个字符串描述
  11. #define evutil_socket_error_to_string(errcode)
  12. // 设置 sock 为非阻塞的 socket
  13. int evutil_make_socket_nonblocking(evutil_socket_t sock);
  14. // 设置 sock 的地址可重用
  15. int evutil_make_listen_socket_reuseable(evutil_socket_t sock);

字符串相关

  1. // 它们对应于标准的 snprintf 和 vsnprintf
  2. int evutil_snprintf(char *buf, size_t buflen, const char *format, ...);
  3. int evutil_vsnprintf(char *buf, size_t buflen, const char *format, va_list ap);

安全的随机数生成

    1. // 此函数将使用随机的数据填充 n 个字节的 buf
    2. void evutil_secure_rng_get_bytes(void *buf, size_t n);

(转)Libevent(3)— 基础库的更多相关文章

  1. F#之旅5 - 小实践之下载网页(爬虫基础库)

    参考文章:https://swlaschin.gitbooks.io/fsharpforfunandprofit/content/posts/fvsc-download.html 参考的文章教了我们如 ...

  2. 开始编写寄几的 CSS 基础库

    前言 在现在的互联网业务中,前端开发人员往往需要支持比较多的项目数量.很多公司只有 1-2 名前端开发人员,这其中还不乏规模比较大的公司.这时前端同学就需要独挡一面支持整个公司上下的前端业务,项目如流 ...

  3. Python 命令行(CLI)基础库

    在 CLI 下写 UI 应用 前阵子看了一下自己去年写的 Python-视频转字符动画,感觉好糗..所以几乎把整篇文章重写了一遍.并使用 curses 库实现字符动画的播放. 但是感觉,curses ...

  4. JAVA基础库的使用点滴

    Idea中双击SHIFT可以搜索[Eclipse中也有],这个很重要,可以找到当前的项目中可以引擎的已有的类,不要再次自己发明轮子 各种Util先在基础库和开源库中找 Base64编码 guava:c ...

  5. cocos2d-x开发:服务端基础库封装

    元旦前面几天都在忙着面试,随后的几天也就一直在做服务端基础库开发方面的工作.对于服务端开发,是很久之前的事情了.那时候我还在大学读书,一直都是在倒腾服务端开发方面的东西,毕业后参加公司工作就是一直从事 ...

  6. PHP基础库及扩展库安装

    一.安装PHP所需的lib库(基础库): 1.yum install zlib-devel libxml2-devel libjpey-devel libjpeg-turbo-devel libico ...

  7. Light libraries是一组通用的C基础库,目标是为减少重复造轮子而写(全部用POSIX C实现)

    Light libraries是一组通用的C基础库,目标是为减少重复造轮子而写实现了日志.原子操作.哈希字典.红黑树.动态库加载.线程.锁操作.配置文件.os适配层.事件驱动.工作队列.RPC.IPC ...

  8. YARN底层基础库

      YARN基础库是其他一切模块的基础,它的设计直接决定了YARN的稳定性和扩展性,YARN借用了MRV1的一些底层基础库,比如RPC库等,但因为引入了很多新的软件设计方式,所以它的基础库更多,包括直 ...

  9. Python基础库之jieba库的使用(第三方中文词汇函数库)

    各位学python的朋友,是否也曾遇到过这样的问题,举个例子如下: “I am proud of my motherland” 如果我们需要提取中间的单词要走如何做? 自然是调用string中的spl ...

  10. ESP8266开发之旅 网络篇⑥ ESP8266WiFiGeneric——基础库

    1. 前言     在前面的博文中,博主介绍到ESP8266WiFi库是包含了很多功能的一个超级库.ESP8266WiFi库不仅仅局限于 ESP8266WiFi.h 和 ESP8266WiFi.cpp ...

随机推荐

  1. HW2.9

    import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...

  2. MVC client validation after PartialView loaded via Ajax MVC3中 弹出 Dialog时候 提交的时候 使用 Jquery 不验证 form表单 的解决办法

    I came across this scenario whereby my main View uses Ajax posts to retrieve PartialViews and delive ...

  3. 使用ndk standalone工具链来编译某个平台下的库

    地址: http://www.kandroid.org/ndk/docs/STANDALONE-TOOLCHAIN.html It is now possible to use the toolcha ...

  4. HTML5终极备忘大全

    二.文字备忘之标签 HTML5中新增的标签 <article> 定义文章 <aside> 定义页面内容旁边的内容 <audio> 定义声音内容 <canvas ...

  5. Linux vmstat具体解释(系统IO)

    1. vmstat 能够展现给定时间间隔的server的状态值,包含server的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况 vmstat 2 10 2: 每隔2s 10 : 统计10次 ...

  6. C++编译器函数模版机制剖析 - 函数模版的本质

    思考:为什么函数模板能够和函数重载放在一块.C++编译器是怎样提供函数模板机制的? demo 1 #include <cstdio> #include <iostream> u ...

  7. 关于AFinal的混淆

    http://blog.csdn.net/aibieqing241/article/details/38979531 我的前个项目中打算引用个框架,于是就看上了AFinal的这个开源库, 感觉用着还不 ...

  8. jfinal文件上传和form表单值为null的解决方法

    今天使用jfinal做上传提交的时候,遇到一个问题:添加了上传功能,原来的form表单submit提交时所有值都为null了,研究了很长时间,终于发现 在jfinal上传时候,jsp加 enctype ...

  9. careercup-数学与概率

    7.3 给定直角坐标系上的两条线,确定这两条线会不会相交. 解法: 此题有很多不确定的地方:两条线的格式是什么?两条线实为同一条怎么处理?这些含糊不清的地方最好跟面试官讨论一下. 下面将做出以下假设: ...

  10. How to Enable Multi-Touch

    This is a frequently asked question. Multi-touch feature is available on both iOS & Android port ...