Libevent应用 (四) 辅助类型和函数

4 辅助类型和函数

4.1 基本类型

4.1.1 evutil_socket_t

​ 在除Windows之外的大多数地方,套接字是个整数,操作系统按照数值次序进行处理。然而,使用Windows套接字API时,socket具有类型SOCKET,它实际上是个类似指针的句柄,收到这个句柄的次序是未定义的。在Windows中,libevent定义evutil_socket_t类型为整型指针,可以处理socket()或者accept()的输出,而没有指针截断的风险。

4.1.2 标准整数类型

Libevent应用 (四) 辅助类型和函数

4.2 套接字API

int evutil_closesocket(evutil_socket_t s);
#define EVUTIL_CLOSESOCKET(s) evutil_closesocket(s)

​ 这个接口用于关闭套接字。在Unix中,它是close()的别名;

int evutil_make_socket_nonblocking(evutil_socket_t sock);

​ evutil_make_socket_nonblocking()函数要求一个套接字(来自socket()或者accept())作为参数,将其设置为非阻塞的。(设置Unix中的O_NONBLOCK标志和Windows中的FIONBIO标志)

int evutil_make_listen_socket_reuseable(evutil_socket_t sock);

​ 这个函数确保关闭监听套接字后,它使用的地址可以立即被另一个套接字使用。