acl
3.5.3.0
|
#include <socket_stream.hpp>
Public 成员函数 | |
socket_stream (void) | |
virtual | ~socket_stream (void) |
bool | open (int fd, bool udp_mode=false) |
bool | open (ACL_VSTREAM *vstream, bool udp_mode=false) |
bool | open (const char *addr, int conn_timeout, int rw_timeout, time_unit_t unit=time_unit_s) |
bool | bind_udp (const char *addr, int rw_timeout=0, unsigned flag=0) |
bool | shutdown_read (void) |
bool | shutdown_write (void) |
bool | shutdown_readwrite (void) |
int | sock_handle (void) const |
int | unbind_sock (void) |
int | sock_type (void) const |
const char * | get_peer (bool full=false) const |
const char * | get_peer_ip (void) const |
bool | set_peer (const char *addr) |
const char * | get_local (bool full=false) const |
const char * | get_local_ip (void) const |
bool | set_local (const char *addr) |
bool | alive (void) const |
socket_stream & | set_tcp_nodelay (bool on) |
socket_stream & | set_tcp_solinger (bool on, int linger) |
socket_stream & | set_tcp_sendbuf (int size) |
socket_stream & | set_tcp_recvbuf (int size) |
socket_stream & | set_tcp_non_blocking (bool on) |
bool | get_tcp_nodelay (void) |
int | get_tcp_solinger (void) |
int | get_tcp_sendbuf (void) |
int | get_tcp_recvbuf (void) |
bool | get_tcp_non_blocking (void) |
Public 成员函数 继承自 acl::istream | |
istream (void) | |
virtual | ~istream (void) |
int | read (void *buf, size_t size, bool loop=true) |
bool | readtags (void *buf, size_t *inout, const char *tag, size_t len) |
bool | gets (void *buf, size_t *size_inout, bool nonl=true) |
bool | read (long long int &n, bool loop=true) |
bool | read (int &n, bool loop=true) |
bool | read (short &n, bool loop=true) |
bool | read (char &ch) |
bool | read (string &s, bool loop=true) |
bool | read (string *s, bool loop=true) |
bool | read (string &s, size_t max, bool loop=true) |
bool | read (string *s, size_t max, bool loop=true) |
bool | gets (string &s, bool nonl=true, size_t max=0) |
bool | gets (string *s, bool nonl=true, size_t max=0) |
bool | readtags (string &s, const string &tag) |
bool | readtags (string *s, const string &tag) |
int | getch (void) |
int | ugetch (int ch) |
bool | gets_peek (string &buf, bool nonl=true, bool clear=false, int max=0) |
bool | gets_peek (string *buf, bool nonl=true, bool clear=false, int max=0) |
bool | read_peek (string &buf, bool clear=false) |
bool | read_peek (string *buf, bool clear=false) |
int | read_peek (void *buf, size_t size) |
bool | readn_peek (string &buf, size_t cnt, bool clear=false) |
bool | readn_peek (string *buf, size_t cnt, bool clear=false) |
istream & | operator>> (string &s) |
istream & | operator>> (long long int &n) |
istream & | operator>> (int &n) |
istream & | operator>> (short &n) |
istream & | operator>> (char &ch) |
Public 成员函数 继承自 acl::stream | |
stream (void) | |
virtual | ~stream (void)=0 |
bool | close (void) |
bool | eof (void) const |
void | clear_eof (void) |
bool | opened (void) const |
ACL_VSTREAM * | get_vstream (void) const |
ACL_VSTREAM * | unbind (void) |
bool | set_ctx (void *ctx, const char *key=NULL, bool replace=true) |
void * | get_ctx (const char *key=NULL) const |
void * | del_ctx (const char *key=NULL) |
void | set_rw_timeout (int n) |
void | set_time_unit (time_unit_t unit) |
int | get_rw_timeout (void) const |
stream_hook * | setup_hook (stream_hook *hook) |
stream_hook * | get_hook (void) const |
stream_hook * | remove_hook (void) |
string & | get_buf (void) |
dbuf_pool & | get_dbuf (void) |
Public 成员函数 继承自 acl::ostream | |
ostream (void) | |
virtual | ~ostream (void) |
int | write (const void *data, size_t size, bool loop=true, bool buffed=false) |
bool | fflush (void) |
int | writev (const struct iovec *v, int count, bool loop=true) |
int | vformat (const char *fmt, va_list ap) |
int | format (const char *fmt,...) ACL_CPP_PRINTF(2 |
int int | write (long long int n) |
int | write (int n) |
int | write (short n) |
int | write (char ch) |
int | write (const string &s, bool loop=true) |
int | puts (const char *s) |
ostream & | operator<< (const string &s) |
ostream & | operator<< (const char *s) |
ostream & | operator<< (long long int n) |
ostream & | operator<< (int n) |
ostream & | operator<< (short n) |
ostream & | operator<< (char ch) |
virtual int | push_pop (const char *in, size_t len, string *out=NULL, size_t max=0) |
virtual int | pop_end (string *out, size_t max=0) |
Public 成员函数 继承自 acl::pipe_stream | |
pipe_stream () | |
virtual | ~pipe_stream () |
virtual void | clear () |
额外继承的成员函数 | |
Protected 成员函数 继承自 acl::stream | |
void | open_stream (bool is_file=false) |
void | reopen_stream (bool is_file=false) |
Protected 成员函数 继承自 acl::acl::noncopyable | |
noncopyable () | |
~noncopyable () | |
Protected 属性 继承自 acl::stream | |
stream_hook * | hook_ |
ACL_VSTREAM * | stream_ |
string * | buf_ |
dbuf_pool * | dbuf_ |
void * | default_ctx_ |
std::map< string, void * > * | ctx_table_ |
bool | eof_ |
bool | opened_ |
在文件 socket_stream.hpp 第 14 行定义.
acl::socket_stream::socket_stream | ( | void | ) |
|
virtual |
bool acl::socket_stream::alive | ( | void | ) | const |
检查套接口连接的存活状态(内部使用了非阻塞读的方式进行探测)
bool acl::socket_stream::bind_udp | ( | const char * | addr, |
int | rw_timeout = 0 , |
||
unsigned | flag = 0 |
||
) |
绑定本地 UDP 地址,创建 UDP 网络流对象
addr | {const char*} 本机地址,格式:ip:port;该地址也可以为 UNIX 域套接字或 Linux 抽象域套接字(Linux abstract unix socket) |
rw_timeout | {int} 读写超时时间(秒) |
flag | {unsigned} |
const char* acl::socket_stream::get_local | ( | bool | full = false | ) | const |
获得连接的本地地址
full | {bool} 是否获得完整地址,即:IP:PORT,如果该参数 为 false,则仅返回 IP,否则返回 IP:PORT |
const char* acl::socket_stream::get_local_ip | ( | void | ) | const |
获得连接的本地 IP 地址
const char* acl::socket_stream::get_peer | ( | bool | full = false | ) | const |
获得远程连接的地址
full | {bool} 是否获得完整地址,即:IP:PORT,如果该参数 为 false,则仅返回 IP,否则返回 IP:PORT |
const char* acl::socket_stream::get_peer_ip | ( | void | ) | const |
获得远程连接的 IP 地址
bool acl::socket_stream::get_tcp_nodelay | ( | void | ) |
获得 TCP 套接字是否设置了 nodelay 选项
bool acl::socket_stream::get_tcp_non_blocking | ( | void | ) |
判断当前套接字是否被设置了非阻塞模式
int acl::socket_stream::get_tcp_recvbuf | ( | void | ) |
获取 TCP 套接字的读缓冲区大小
int acl::socket_stream::get_tcp_sendbuf | ( | void | ) |
获取 TCP 套接字的写缓冲区大小
int acl::socket_stream::get_tcp_solinger | ( | void | ) |
获得 TCP 套接字的 linger 值
bool acl::socket_stream::open | ( | int | fd, |
bool | udp_mode = false |
||
) |
根据套接字打开的一个网络流
fd | 套接字 |
udp_mode | {bool} 是否是 UDP 方式 |
bool acl::socket_stream::open | ( | ACL_VSTREAM * | vstream, |
bool | udp_mode = false |
||
) |
bool acl::socket_stream::open | ( | const char * | addr, |
int | conn_timeout, | ||
int | rw_timeout, | ||
time_unit_t | unit = time_unit_s |
||
) |
连接远程服务器并打开网络连接流
addr | {const char*} 服务器地址, 若连接域套接口服务器(UNIX平台), 域套接地址:/tmp/test.sock,在Linux 平台下还可连接抽象域套接字,即 abastract unix socket,为了与普通基于文件路径的unix域套接地址区别, 在 acl 库中规定如果地址第一个字节为 @,则认为是 Linux 抽象域套接字 (abstract unix domain socket)不过需注意该功能仅有 Linux 平台支持, 举例,如:@/tmp/test.sock;; 如果连接一个TCP服务器,则地址格式为: remote_addr[@local_ip], 如: www.sina.com:80@60, 意思是绑定本的网卡地址为: 60.28.250.199, 远程连接 www.sina.com 的 80, 如果由OS自动绑定本地 IP 地址,则可以写为:www.sina.com:80 .28. 250.1 99 |
conn_timeout | {int} 连接超时时间(单位值取决于 use_ms) |
rw_timeout | {int} 读写超时时间(单位值取决于 use_ms) |
unit | {time_unit_t} 超时时间的时间单位 |
bool acl::socket_stream::set_local | ( | const char * | addr | ) |
设置本地地址
addr | {const char*} 地址,格式:ip:port |
bool acl::socket_stream::set_peer | ( | const char * | addr | ) |
设置远程连接对象的地址,对于 TCP 传输方式,不需要显示调用此函数 设置远程对象地址,UDP 传输方式时需要调用此函数设置远程地址,然后 才可以向远程连接写数据
addr | {const char*} 远程连接对象的地址,格式:ip:port |
socket_stream& acl::socket_stream::set_tcp_nodelay | ( | bool | on | ) |
socket_stream& acl::socket_stream::set_tcp_non_blocking | ( | bool | on | ) |
socket_stream& acl::socket_stream::set_tcp_recvbuf | ( | int | size | ) |
socket_stream& acl::socket_stream::set_tcp_sendbuf | ( | int | size | ) |
socket_stream& acl::socket_stream::set_tcp_solinger | ( | bool | on, |
int | linger | ||
) |
设置 TCP 套接字的 SO_LINGER 选项
on | {bool} 是否启用 SO_LINGER 选项 |
linger | {int} 当SO_LINGER打开时,取消 timed_wait 的时间,单位为秒 |
bool acl::socket_stream::shutdown_read | ( | void | ) |
关闭套接口读操作
bool acl::socket_stream::shutdown_readwrite | ( | void | ) |
关闭套接口读写操作
bool acl::socket_stream::shutdown_write | ( | void | ) |
关闭套接口写操作
int acl::socket_stream::sock_handle | ( | void | ) | const |
获得网络连接流的套接字连接句柄
int acl::socket_stream::sock_type | ( | void | ) | const |
获得 socket 的类型
int acl::socket_stream::unbind_sock | ( | void | ) |
解绑套接字与流对象的绑定关系,同时将套接字返回给用户,即 将该套接字的管理权交给用户,本流对象在释放时不会关闭该套 接字,但用户接管该套接字后用完后必须将其关闭 解绑后除了 close/open 的调用有意义外,其它的调用(包括流对 象读写在内)都无意义