U盘PE| w764位旗舰版下载 | U盘装win7系统 | U盘启动 |win7pe | win10下载 |加入收藏土豆PE官网U盘PE,U盘装win7系统,win7pe,U盘启动,U盘装系统,w764位旗舰版下载站!
当前位置:主页 > 帮助中心 > 帮助中心 >

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)

Copyright © 2012-2014 Www.tudoupe.Com. 土豆启动 版权所有 意见建议:tdsky@tudoupe.com

土豆系统,土豆PE,win7系统下载,win7 64位旗舰版下载,u盘启动,u盘装系统,win10下载,win10正式版下载,win10 RTM正式版下载,win8下载,电脑蓝屏,IE11修复,网络受限,4K对齐,双系统,隐藏分区,系统安装不了,U盘装系统,笔记本装系统,台式机装系统,diskgenius运用,GHSOT装系统,U盘修复,U盘技巧,U盘速度,U盘不能格式化,U盘复制发生错误,U盘加密,U盘选购,开机黑屏,蓝屏,进不了系统,上不了网,打不开程序,点击无反应,系统设置,PE个性化,PE添加网络,PE维护系统

点击这里给我发消息