libevent在windows下的接口及兼容性、可移植的定时器函数等(未完待续1/26)
来源:http://www.tudoupe.com时间:2022-01-26
文章目录
- 一、基本类型
- 1)evutil_socket_t
- 2)标准整数类型
- 3)各种兼容性类型
- 二、可移植的定时器函数
- 三、Socket API兼容性
- 四、可移植的字符串操作函数
- 五、区域无关的字符串处理函数(略)
- 六、IPV6辅助函数和可移植函数
- 七、结构体可移植函数
- 八、安全的随机数生成器
链接:https://www.cnblogs.com/gqtcgq/p/7247257.html
在头文件<event2/util.h>中定义了许多有用的函数和类型来帮助实现可移植的程序。Libevent在内部使用这些类型和函数。
一、基本类型
1)evutil_socket_t
除了Windows之外的大多数系统,socket就是一个整数,而且操作系统按照数值顺序对它们进行处理。而在Windows socket API中,socket是SOCKET类型,该类型是一个类似于指针的OS句柄,而且得到它们的顺序也是未定义的。Libevent定义evutil_socket_t类型为一个整数,该整数可以表示socket或者accept函数的返回值,并且可以在Windows上避免指针截断的风险。
2)标准整数类型
有时你的C系统可能落后于21世纪,因此并没有实现C99标准的stdint.h头文件。这种情况下,Libevent自己定义了stdint.h中的,确定位宽度(bit-width-specific)的整数。
![]()
类似于C99标准,这些类型都有确定的位宽度。
3)各种兼容性类型
1)在那些具有ssize_t的类型的平台上,ev_ssize_t就被定义为ssize_t(signedsize_t),对于没有这种类型的平台,ev_ssize_t会被定义为合理的默认值。ev_ssize_t类型可能的最大值是EV_SSIZE_MAX;最小值为EV_SSIZE_MIN。(在平台没有定义SIZE_MAX的时候,size_t类型的最大可能值是EV_SIZE_MAX)
2)ev_off_t类型用来表示一个文件或一段内存中的偏移值。在那些具有合理的off_t类型定义的系统上,ev_off_t被定义为off_t,在Windows上被定义为ev_int4_t。
3)某些socket API的实现提供了长度类型socklen_t,而某些却没有提供。在那些提供该类型的平台上,ev_uintptr_t就被定义为socklen_t,而那些没有定义的平台,ev_socklen_t被定义为一个合理的默认值。
4)ev_intptr_t类型是一个,具有足够大的空间来保存一个指针而不会丢失位的有符号整数类型。ev_uintptr_t类型是一个,具有足够大的空间来保存一个指针而不会丢失位的无符号整数类型。
二、可移植的定时器函数
并不是所有的平台都定义了标准的timeval操作函数,所以Libevent提供了自己的实现。
1)
这些宏会将其前两个参数进行相加或相减,并将结果保存在第三个参数中。
2)
evutil_timerclear将一个timeval清空是将其值置为0。evutil_timerisset检查timeval,如果timeval的值为非0,则该宏返回true,否则返回false。
3)
evutil_timercmp比较两个timeval,并且如果它们之间的相对关系符合关系操作符cmp定义的比较关系的话,该宏返回true。比如:evutil_timercmp(t1, t2, <=)意味着“Is t1 <= t2”。注意,不像某些操作系统,Libevent的timercmp支持所有的C关系操作符(即是<, >, ==, !=, <= 和 >=)。
4)
evutil_timercmp比较两个timeval,并且如果它们之间的相对关系符合关系操作符cmp定义的比较关系的话,该宏返回true。比如:evutil_timercmp(t1, t2, <=)意味着“Is t1 <= t2”。注意,不像某些操作系统,Libevent的timercmp支持所有的C关系操作符(即是<, >, ==, !=, <= 和 >=)。
5)
evutil_gettimeofday函数设置tv为当前时间,参数tz无用。
三、Socket API兼容性
由于历史原因,Windows从未真正的以良好的兼容性实现伯克利Socket API。下面的函数可以规避这种情况:
1)关闭套接字
2)
3)
4)
5)
四、可移植的字符串操作函数
1)
2)
五、区域无关的字符串处理函数(略)
六、IPV6辅助函数和可移植函数
1)
2)
3)
七、结构体可移植函数
八、安全的随机数生成器
很多应用都需要一个难以预测的随机数源来保证它们的安全性。
1)
下一篇:windows2016官网下载
相关新闻
- 2022-01-29 Windows 11更新系统版本的教程
- 2022-01-29 Python学习八:pip 最常用命令、pip升
- 2022-01-28 GitLab集成Jenkins进行项目构建、发布
- 2022-01-28 小白一键重装系统教程win10安装步骤
- 2022-01-27 便是三步装机系统下载地址和安装
- 2022-01-27 老毛桃u盘启动盘制作工具装机教程
- 2022-01-27 windows环境下jenkins+maven+svn+tomcat实现
- 2022-01-27 windows2016官网下载
- 2022-01-26 markdown编辑软件在哪下载?
- 2022-01-26 【Tableau server日常维护9.0】window s
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
