acl/lib_acl/include/net/acl_sane_socket.h
2023-11-20 17:39:36 +08:00

78 lines
2.1 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_SANE_SOCKET_INCLUDE_H
#define ACL_SANE_SOCKET_INCLUDE_H
#ifdef __cplusplus
extern "C" {
#endif
#include "../stdlib/acl_define.h"
#ifdef ACL_UNIX
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/un.h>
#include <arpa/inet.h>
#endif
/**
* 取得套接字连接对方的网络地址, 地址格式为: IP:PORT
* @param fd {ACL_SOCKET} 网络套接字
* @param buf {char*} 存储地址的缓冲区,不能为空
* @param bsize {size_t} buf 空间大小
* @return {int} 0: ok; -1: error
*/
ACL_API int acl_getpeername(ACL_SOCKET fd, char *buf, size_t bsize);
/**
* 取得套接字连接本地的网络地址, 地址格式为: IP:PORT
* @param fd {ACL_SOCKET} 网络套接字
* @param buf {char*} 存储地址的缓冲区,不能为空
* @param bsize {size_t} buf 空间大小
* @return {int} 0: ok; -1: error
*/
ACL_API int acl_getsockname(ACL_SOCKET fd, char *buf, size_t bsize);
/**
* 获得套接字类型
* @param fd {ACL_SOCKET} 网络套接字
* @return {int} -1 表示出错或所给够本非套接字,如果是 TCP 则返回 SOCK_STREAM,
* 如果是 UDP 则返回 SOCK_DGRAM
*/
ACL_API int acl_getsocktype(ACL_SOCKET fd);
/**
* 取得套接字地址族类型:是网络套接字还是域套接字
* @param fd {ACL_SOCKET} 网络套接字
* @return {int} -1: 表示出错或输入非法或非套接字; >= 0 表示成功获得套接字
* 类型,返回值有 AF_INET、AF_INET6 或 AF_UNIX(仅限 UNIX 平台)
*/
ACL_API int acl_getsockfamily(ACL_SOCKET fd);
/**
* 检查套接字:是监听套接字还是网络套接字
* @param fd {ACL_SOCKET} 套接字句柄
* @return {int} 返回 -1 表示该句柄非套接字1 为监听套接字0 为非监听套接字
*/
ACL_API int acl_check_socket(ACL_SOCKET fd);
/**
* 判断套接字是否为监听套接字
* @param fd {ACL_SOCKET} 套接字句柄
* @return {int} 返回值 0 表示非监听套接字,非 0 表示为监听套接字
*/
ACL_API int acl_is_listening_socket(ACL_SOCKET fd);
/**
* 将大接口绑定指定的网卡上必须在调用connect, bind系统API之前调用
* @param sock {ACL_SOCKET}
* @param iface {const char*} 网卡名
* @return {int} 返回 0 表示绑定成功,-1 表示失败
*/
ACL_API int acl_bind_interface(ACL_SOCKET sock, const char *iface);
#ifdef __cplusplus
}
#endif
#endif