acl/lib_acl/include/net/acl_tcp_ctl.h

100 lines
2.9 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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