acl  3.5.3.0
acl_listen.h 文件参考
+ acl_listen.h 的引用(Include)关系图:
+ 此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

宏定义

#define ACL_INET_FLAG_NONE   0
 
#define ACL_INET_FLAG_NBLOCK   1
 
#define ACL_INET_FLAG_REUSEPORT   1 << 1
 
#define ACL_INET_FLAG_FASTOPEN   1 << 2
 
#define ACL_INET_FLAG_EXCLUSIVE   1 << 3
 

类型定义

typedef int(* acl_accept_fn) (int, struct sockaddr *, socklen_t *)
 

函数

ACL_API ACL_SOCKET acl_sane_accept (ACL_SOCKET sock, struct sockaddr *sa, socklen_t *len)
 
ACL_API ACL_SOCKET acl_accept (ACL_SOCKET sock, char *buf, size_t size, int *sock_type)
 
ACL_API ACL_SOCKET acl_inet_listen (const char *addr, int backlog, unsigned flag)
 
ACL_API ACL_SOCKET acl_inet_accept (ACL_SOCKET listen_fd)
 
ACL_API ACL_SOCKET acl_inet_accept_ex (ACL_SOCKET listen_fd, char *ipbuf, size_t size)
 
ACL_API ACL_SOCKET acl_inet_bind (const struct addrinfo *res, unsigned flag)
 
ACL_API ACL_SOCKET acl_udp_bind3 (const char *addr, unsigned flag, int *family)
 
ACL_API ACL_SOCKET acl_udp_bind (const char *addr, unsigned flag)
 
ACL_API void acl_set_accept (acl_accept_fn fn)
 

宏定义说明

◆ ACL_INET_FLAG_EXCLUSIVE

#define ACL_INET_FLAG_EXCLUSIVE   1 << 3

在文件 acl_listen.h18 行定义.

◆ ACL_INET_FLAG_FASTOPEN

#define ACL_INET_FLAG_FASTOPEN   1 << 2

在文件 acl_listen.h17 行定义.

◆ ACL_INET_FLAG_NBLOCK

#define ACL_INET_FLAG_NBLOCK   1

在文件 acl_listen.h15 行定义.

◆ ACL_INET_FLAG_NONE

#define ACL_INET_FLAG_NONE   0

在文件 acl_listen.h14 行定义.

◆ ACL_INET_FLAG_REUSEPORT

#define ACL_INET_FLAG_REUSEPORT   1 << 1

在文件 acl_listen.h16 行定义.

类型定义说明

◆ acl_accept_fn

typedef int(* acl_accept_fn) (int, struct sockaddr *, socklen_t *)

在文件 acl_listen.h146 行定义.

函数说明

◆ acl_accept()

ACL_API ACL_SOCKET acl_accept ( ACL_SOCKET  sock,
char *  buf,
size_t  size,
int *  sock_type 
)

方便通用的监听套接字的函数,用来接收客户端连接

参数
sock{ACL_SOCKET} 监听套接字
buf{char*} 当成功接收一个客户端连接后,如果该 buf 非空则存放客户端 地址,格式:ip:port (针对 TCP 套接口), file_path (针对 UNIX 域套接口)
size{size_t} buf 缓冲区大小
sock_type{int*} 非空时用来存放客户端 SOCKET 类型,AF_INET/AF_UNIX
返回
{ACL_SOCKET} 客户端连接句柄, 返回值 != ACL_SOCKET_INVALID 则表明成 功收到一个客户端连接

◆ acl_inet_accept()

ACL_API ACL_SOCKET acl_inet_accept ( ACL_SOCKET  listen_fd)

接收外来客户端网络连接

参数
listen_fd{ACL_SOCKET} 监听套接字
返回
{ACL_SOCKET} 客户端连接,如果返回 ACL_SOCKET_INVALID 表示接收客户端 连接出错

◆ acl_inet_accept_ex()

ACL_API ACL_SOCKET acl_inet_accept_ex ( ACL_SOCKET  listen_fd,
char *  ipbuf,
size_t  size 
)

接收外来客户端网络连接

参数
listen_fd{ACL_SOCKET} 监听套接字
ipbuf{char*} 指针非空且接收客户端连接成功,则其存储客户端的网络地址
size{size_t} 如果 ipbuf 不为空则表示 ipbuf 的内存空间大小
返回
{ACL_SOCKET} 客户端连接,ACL_SOCKET_INVALID 表示接收客户端连接出错

◆ acl_inet_bind()

ACL_API ACL_SOCKET acl_inet_bind ( const struct addrinfo *  res,
unsigned  flag 
)

网络地址绑定函数,适用于 TCP/UDP 套接口

参数
res{const struct addrinfo*} 域名解析得到的地址信息对象
flag{unsigned int} 标志位
返回
{ACL_SOCKET} 返回 ACL_SOCKET_INVALID 表示绑定失败

◆ acl_inet_listen()

ACL_API ACL_SOCKET acl_inet_listen ( const char *  addr,
int  backlog,
unsigned  flag 
)

监听某个网络地址

参数
addr{const char*} 网络地址, 格式如:127.0.0.1:8080,当输入地址为 ip:0 时则由操作系统自动分配监听端口号,监听成功后可以调用 acl_getsockname 获得真正监听的地址
backlog{int} 监听套接字系统接收区的队列大小
flag{unsigned} 监听标志位,参见:ACL_INET_FLAG_XXX
返回
{ACL_SOCKET} 返回监听套接字,如果为 ACL_SOCKET_INVALID 表示无法监听 该网络地址

◆ acl_sane_accept()

ACL_API ACL_SOCKET acl_sane_accept ( ACL_SOCKET  sock,
struct sockaddr *  sa,
socklen_t *  len 
)

监听套接字接收外来客户端连接

参数
sock{ACL_SOCKET} 监听套接字
sa{struct sockaddr*} 存储客户端的网络地址,不能为空
len{socklen_t*} sa 内存空间大小,不能为空
返回
{ACL_SOCKET} 如果返回 ACL_SOCKET_INVALID 表示接收失败

◆ acl_set_accept()

ACL_API void acl_set_accept ( acl_accept_fn  fn)

◆ acl_udp_bind()

ACL_API ACL_SOCKET acl_udp_bind ( const char *  addr,
unsigned  flag 
)

◆ acl_udp_bind3()

ACL_API ACL_SOCKET acl_udp_bind3 ( const char *  addr,
unsigned  flag,
int *  family 
)

绑定指针的 UDP 地址

参数
addr{const char*} UDP 地址,格式:IP:PORT 或 UNIX 域套接口,当为 UNIX 域套接口时的格式为:{domain_path}@udp,其中 @udp 表示为 UDP 域套接口 后缀;内部自动区别网络套接口和 UNIX 域套接口,域套接口仅支持 UNIX 平台
flag{unsigned int} 标志位
family{int*} 如果绑定成功且该地址非空则存放地址类型,类型有: AF_INET, AF_INET6, AF_UNIX
返回
{ACL_SOCKET} 返回 ACL_SOCKET_INVALID 表示绑定失败