acl  3.5.3.0
acl_tcp_ctl.h
浏览该文件的文档.
1 #ifndef ACL_TCP_CTL_INCLUDE_H
2 #define ACL_TCP_CTL_INCLUDE_H
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 
8 #include "../stdlib/acl_define.h"
9 
10 #define ACL_SOCKET_RBUF_SIZE 204800 /**< 缺省读缓冲区大小 */
11 #define ACL_SOCKET_WBUF_SIZE 204800 /**< 缺少写缓冲区大小 */
12 
13 /**
14  * 设置 TCP 套接字的读缓冲区大小
15  * @param fd {ACL_SOCKET} 套接字
16  * @param size {int} 缓冲区设置大小
17  */
18 ACL_API void acl_tcp_set_rcvbuf(ACL_SOCKET fd, int size);
19 
20 /**
21  * 设置 TCP 套接字的写缓冲区大小
22  * @param fd {ACL_SOCKET} 套接字
23  * @param size {int} 缓冲区设置大小
24  */
25 ACL_API void acl_tcp_set_sndbuf(ACL_SOCKET fd, int size);
26 
27 /**
28  * 获取 TCP 套接字的读缓冲区大小
29  * @param fd {ACL_SOCKET} 套接字
30  * @return {int} 缓冲区大小
31  */
32 ACL_API int acl_tcp_get_rcvbuf(ACL_SOCKET fd);
33 
34 /**
35  * 获取 TCP 套接字的写缓冲区大小
36  * @param fd {ACL_SOCKET} 套接字
37  * @return {int} 缓冲区大小
38  */
39 ACL_API int acl_tcp_get_sndbuf(ACL_SOCKET fd);
40 
41 /**
42  * 打开 TCP 套接字的 nodelay 功能
43  * @param fd {ACL_SOCKET} 套接字
44  */
45 ACL_API void acl_tcp_set_nodelay(ACL_SOCKET fd);
46 
47 /**
48  * 设置 TCP 套接字的 nodelay 功能
49  * @param fd {ACL_SOCKET} 套接字
50  * @param onoff {int} 1 表示打开,0 表示关闭
51  */
52 ACL_API void acl_tcp_nodelay(ACL_SOCKET fd, int onoff);
53 
54 /**
55  * 获得 TCP 套接字是否设置了 nodelay 选项
56  * @param fd {ACL_SOCKET} 套接字
57  * @return {int} 1 表示打开,0 表示关闭
58  */
59 ACL_API int acl_get_tcp_nodelay(ACL_SOCKET fd);
60 
61 /**
62  * 设置 TCP 套接字的 SO_LINGER 选项
63  * @param fd {ACL_SOCKET} 套接字
64  * @param onoff {int} 是否启用 SO_LINGER 选项
65  * @param timeout {int} 当SO_LINGER打开时,取消 timed_wait 的时间,单位为秒
66  */
67 ACL_API void acl_tcp_so_linger(ACL_SOCKET fd, int onoff, int timeout);
68 
69 /**
70  * 获得 TCP 套接字的 linger 值
71  * @param fd {ACL_SOCKET} 套接字
72  * @return {int} 返回 -1 表示未设置 linger 选项或内部出错,>= 0 表示设置了
73  * linger 选项且该值表示套接字关闭后该 TCP 连接在内核中维持 TIME_WAIT 状态
74  * 的逗留时间(秒)
75  */
76 ACL_API int acl_get_tcp_solinger(ACL_SOCKET fd);
77 
78 /**
79  * 设置监听套接字的延迟接收功能,即当客户端连接上有数据时才将该连接返回
80  * 给应用,目前该功能仅支持 Linux
81  * @param fd {ACL_SOCKET} 套接字
82  * @param timeout {int} 如果客户端连接在规定的时间内未发来数据,也将该连接返回
83  * 给应用
84  */
85 ACL_API void acl_tcp_defer_accept(ACL_SOCKET fd, int timeout);
86 
87 /**
88  * 设置监听套接字的快速建立 TCP 连接过程(需要内核支持)
89  * @param fd {ACL_SOCKET}
90  * @param on {int} 非 0 时打开此功能,否则关闭此功能
91  */
92 ACL_API void acl_tcp_fastopen(ACL_SOCKET fd, int on);
93 
94 #ifdef __cplusplus
95 }
96 #endif
97 
98 #endif
99 
ACL_API void acl_tcp_set_rcvbuf(ACL_SOCKET fd, int size)
ACL_API void acl_tcp_set_sndbuf(ACL_SOCKET fd, int size)
ACL_API int acl_tcp_get_sndbuf(ACL_SOCKET fd)
ACL_API void acl_tcp_nodelay(ACL_SOCKET fd, int onoff)
ACL_API int acl_tcp_get_rcvbuf(ACL_SOCKET fd)
ACL_API void acl_tcp_set_nodelay(ACL_SOCKET fd)
ACL_API int acl_get_tcp_solinger(ACL_SOCKET fd)
ACL_API void acl_tcp_so_linger(ACL_SOCKET fd, int onoff, int timeout)
ACL_API int acl_get_tcp_nodelay(ACL_SOCKET fd)
ACL_API void acl_tcp_defer_accept(ACL_SOCKET fd, int timeout)
ACL_API void acl_tcp_fastopen(ACL_SOCKET fd, int on)