acl  3.5.3.0
acl_connect.h
浏览该文件的文档.
1 #ifndef ACL_CONNECT_INCLUDE_H
2 #define ACL_CONNECT_INCLUDE_H
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 
8 #include "../stdlib/acl_define.h"
9 
10 #ifdef ACL_UNIX
11 #include <sys/types.h>
12 #include <netinet/in.h>
13 #include <arpa/inet.h>
14 #include <sys/socket.h>
15 #endif
16 
17 /* in acl_sane_connect.c */
18 /**
19  * 远程连接服务器
20  * @param sock {ACL_SOCKET} 套接字,在UNIX平台下还可以是域套接字
21  * @param sa {const struct sockaddr*} 服务器监听地址
22  * @param len {socklen_t} sa 的地址长度
23  * @return {int} 0: 连接成功; -1: 连接失败
24  */
25 ACL_API int acl_sane_connect(ACL_SOCKET sock, const struct sockaddr * sa,
26  socklen_t len);
27 
28 /* in acl_timed_connect.c */
29 
30 /**
31  * 带超时时间地远程连接服务器
32  * @param fd {ACL_SOCKET} 套接字,在UNIX平台下还可以是域套接字
33  * @param sa {const struct sockaddr*} 服务器监听地址
34  * @param len {socklen_t} sa 的地址长度
35  * @param timeout {int} 连接超时时间(秒级)
36  * @return {int} 0: 连接成功; -1: 连接失败
37  */
38 ACL_API int acl_timed_connect(ACL_SOCKET fd, const struct sockaddr * sa,
39  socklen_t len, int timeout);
40 
41 /**
42  * 带超时时间地远程连接服务器
43  * @param fd {ACL_SOCKET} 套接字,在UNIX平台下还可以是域套接字
44  * @param sa {const struct sockaddr*} 服务器监听地址
45  * @param len {socklen_t} sa 的地址长度
46  * @param timeout {int} 连接超时时间(毫秒级)
47  * @return {int} 0: 连接成功; -1: 连接失败
48  */
49 ACL_API int acl_timed_connect_ms(ACL_SOCKET fd, const struct sockaddr * sa,
50  socklen_t len, int timeout);
51 
52 /* in acl_inet_connect.c */
53 
54 /**
55  * 远程连接网络服务器地址
56  * @param addr {const char*} 远程服务器的监听地址,如:192.168.0.1|80, 如果需
57  * 要绑定本地的地址,则格式为: remote_addr@local_ip,
58  * 如: www.sina.com|80@60.28.250.199
59  * @param blocking {int} 阻塞模式还是非阻塞模式, ACL_BLOCKING 或 ACL_NON_BLOCKING
60  * @param timeout {int} 连接超时时间,如果 blocking 为 ACL_NON_BLOCKING 则该值将被忽略
61  * @return {ACL_SOCKET} 如果返回 ACL_SOCKET_INVALID 表示连接失败
62  */
63 ACL_API ACL_SOCKET acl_inet_connect(const char *addr, int blocking, int timeout);
64 
65 /**
66  * 远程连接网络服务器地址
67  * @param addr {const char*} 远程服务器的监听地址,如:192.168.0.1|80,
68  * 当本机有多个网卡地址且想通过某个指定网卡连接服务器时的地址格式:
69  * remote_ip|remote_port@local_ip,如:211.150.111.12|80@192.168.1.1
70  * @param blocking {int} 阻塞模式还是非阻塞模式, ACL_BLOCKING 或 ACL_NON_BLOCKING
71  * @param timeout {int} 连接超时时间(秒级),如果 blocking 为 ACL_NON_BLOCKING 则该值将被忽略
72  * @param h_error {int*} 当连接失败时存储失败原因错误号
73  * @return {ACL_SOCKET} 如果返回 ACL_SOCKET_INVALID 表示连接失败
74  */
75 ACL_API ACL_SOCKET acl_inet_connect_ex(const char *addr, int blocking,
76  int timeout, int *h_error);
77 
78 /**
79  * 远程连接网络服务器地址
80  * @param addr {const char*} 远程服务器的监听地址,如:192.168.0.1|80,
81  * 当本机有多个网卡地址且想通过某个指定网卡连接服务器时的地址格式:
82  * remote_ip|remote_port@local_ip,如:211.150.111.12|80@192.168.1.1
83  * @param blocking {int} 阻塞模式还是非阻塞模式, ACL_BLOCKING 或 ACL_NON_BLOCKING
84  * @param timeout {int} 连接超时时间(毫秒级),如果 blocking 为 ACL_NON_BLOCKING 则该值将被忽略
85  * @param h_error {int*} 当连接失败时存储失败原因错误号
86  * @return {ACL_SOCKET} 如果返回 ACL_SOCKET_INVALID 表示连接失败
87  */
88 ACL_API ACL_SOCKET acl_inet_timed_connect(const char *addr, int blocking,
89  int timeout, int *h_error);
90 
91 #ifdef ACL_UNIX
92 
93 /* in acl_unix_connect.c */
94 
95 /**
96  * 连接监听域套接字服务器
97  * @param addr {const char*} 服务器监听的域套接字全路径, 如: /tmp/test.sock,
98  * 针对 Linux 平台,如果首字母为 @ 则内部自动采用抽象 UNIX 域套接口进行连接
99  * @param blocking {int} 阻塞模式还是非阻塞模式, ACL_BLOCKING 或 ACL_NON_BLOCKING
100  * @param timeout {int} 连接超时时间,如果 blocking 为 ACL_NON_BLOCKING 则该值将被忽略
101  * @return {ACL_SOCKET} 如果返回 ACL_SOCKET_INVALID 表示连接失败
102  */
103 ACL_API ACL_SOCKET acl_unix_connect(const char *addr, int blocking, int timeout);
104 
105 /* in acl_stream_connect.c */
106 #ifdef SUNOS5
107 ACL_API int acl_stream_connect(const char *path, int blocking, int timeout);
108 #endif
109 
110 #endif
111 
112 #if defined(_WIN32) || defined(_WIN64)
113 typedef int (WINAPI *acl_connect_fn)(SOCKET, const struct sockaddr*, socklen_t);
114 #else
115 typedef int (*acl_connect_fn)(int, const struct sockaddr*, socklen_t);
116 #endif
117 
118 ACL_API void acl_set_connect(acl_connect_fn fn);
119 
120 #ifdef __cplusplus
121 }
122 #endif
123 
124 #endif
int(* acl_connect_fn)(int, const struct sockaddr *, socklen_t)
Definition: acl_connect.h:115
ACL_API int acl_sane_connect(ACL_SOCKET sock, const struct sockaddr *sa, socklen_t len)
ACL_API void acl_set_connect(acl_connect_fn fn)
ACL_API ACL_SOCKET acl_inet_connect_ex(const char *addr, int blocking, int timeout, int *h_error)
ACL_API int acl_timed_connect(ACL_SOCKET fd, const struct sockaddr *sa, socklen_t len, int timeout)
ACL_API ACL_SOCKET acl_inet_connect(const char *addr, int blocking, int timeout)
ACL_API ACL_SOCKET acl_inet_timed_connect(const char *addr, int blocking, int timeout, int *h_error)
ACL_API int acl_timed_connect_ms(ACL_SOCKET fd, const struct sockaddr *sa, socklen_t len, int timeout)