mirror of
https://gitee.com/acl-dev/acl.git
synced 2024-12-02 11:57:43 +08:00
9697f95b8f
This reverts commit 15d999759e
.
100 lines
2.5 KiB
C
100 lines
2.5 KiB
C
#ifndef ACL_TCP_CTL_INCLUDE_H
|
||
#define ACL_TCP_CTL_INCLUDE_H
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
#include "../stdlib/acl_define.h"
|
||
|
||
#define ACL_SOCKET_RBUF_SIZE 204800 /**< 缺省读缓冲区大小 */
|
||
#define ACL_SOCKET_WBUF_SIZE 204800 /**< 缺少写缓冲区大小 */
|
||
|
||
/**
|
||
* 设置 TCP 套接字的读缓冲区大小
|
||
* @param fd {ACL_SOCKET} 套接字
|
||
* @param size {int} 缓冲区设置大小
|
||
*/
|
||
ACL_API void acl_tcp_set_rcvbuf(ACL_SOCKET fd, int size);
|
||
|
||
/**
|
||
* 设置 TCP 套接字的写缓冲区大小
|
||
* @param fd {ACL_SOCKET} 套接字
|
||
* @param size {int} 缓冲区设置大小
|
||
*/
|
||
ACL_API void acl_tcp_set_sndbuf(ACL_SOCKET fd, int size);
|
||
|
||
/**
|
||
* 获取 TCP 套接字的读缓冲区大小
|
||
* @param fd {ACL_SOCKET} 套接字
|
||
* @return {int} 缓冲区大小
|
||
*/
|
||
ACL_API int acl_tcp_get_rcvbuf(ACL_SOCKET fd);
|
||
|
||
/**
|
||
* 获取 TCP 套接字的写缓冲区大小
|
||
* @param fd {ACL_SOCKET} 套接字
|
||
* @return {int} 缓冲区大小
|
||
*/
|
||
ACL_API int acl_tcp_get_sndbuf(ACL_SOCKET fd);
|
||
|
||
/**
|
||
* 打开 TCP 套接字的 nodelay 功能
|
||
* @param fd {ACL_SOCKET} 套接字
|
||
*/
|
||
ACL_API void acl_tcp_set_nodelay(ACL_SOCKET fd);
|
||
|
||
/**
|
||
* 设置 TCP 套接字的 nodelay 功能
|
||
* @param fd {ACL_SOCKET} 套接字
|
||
* @param onoff {int} 1 表示打开,0 表示关闭
|
||
*/
|
||
ACL_API void acl_tcp_nodelay(ACL_SOCKET fd, int onoff);
|
||
|
||
/**
|
||
* 获得 TCP 套接字是否设置了 nodelay 选项
|
||
* @param fd {ACL_SOCKET} 套接字
|
||
* @return {int} 1 表示打开,0 表示关闭
|
||
*/
|
||
ACL_API int acl_get_tcp_nodelay(ACL_SOCKET fd);
|
||
|
||
/**
|
||
* 设置 TCP 套接字的 SO_LINGER 选项
|
||
* @param fd {ACL_SOCKET} 套接字
|
||
* @param onoff {int} 是否启用 SO_LINGER 选项
|
||
* @param timeout {int} 当SO_LINGER打开时,取消 timed_wait 的时间,单位为秒
|
||
*/
|
||
ACL_API void acl_tcp_so_linger(ACL_SOCKET fd, int onoff, int timeout);
|
||
|
||
/**
|
||
* 获得 TCP 套接字的 linger 值
|
||
* @param fd {ACL_SOCKET} 套接字
|
||
* @return {int} 返回 -1 表示未设置 linger 选项或内部出错,>= 0 表示设置了
|
||
* linger 选项且该值表示套接字关闭后该 TCP 连接在内核中维持 TIME_WAIT 状态
|
||
* 的逗留时间(秒)
|
||
*/
|
||
ACL_API int acl_get_tcp_solinger(ACL_SOCKET fd);
|
||
|
||
/**
|
||
* 设置监听套接字的延迟接收功能,即当客户端连接上有数据时才将该连接返回
|
||
* 给应用,目前该功能仅支持 Linux
|
||
* @param fd {ACL_SOCKET} 套接字
|
||
* @param timeout {int} 如果客户端连接在规定的时间内未发来数据,也将该连接返回
|
||
* 给应用
|
||
*/
|
||
ACL_API void acl_tcp_defer_accept(ACL_SOCKET fd, int timeout);
|
||
|
||
/**
|
||
* 设置监听套接字的快速建立 TCP 连接过程(需要内核支持)
|
||
* @param fd {ACL_SOCKET}
|
||
* @param on {int} 非 0 时打开此功能,否则关闭此功能
|
||
*/
|
||
ACL_API void acl_tcp_fastopen(ACL_SOCKET fd, int on);
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
#endif
|
||
|