acl  3.5.3.0
acl::server_socket类 参考

#include <server_socket.hpp>

+ 类 acl::server_socket 继承关系图:
+ acl::server_socket 的协作图:

Public 成员函数

 server_socket (unsigned flag, int backlog)
 
 server_socket (ACL_VSTREAM *sstream)
 
 server_socket (int fd)
 
 server_socket (void)
 
 ~server_socket (void)
 
bool open (const char *addr)
 
bool opened (void) const
 
bool close (void)
 
int unbind (void)
 
socket_streamaccept (int timeout=0, bool *etimed=NULL)
 
const char * get_addr (void) const
 
int sock_handle (void) const
 
void set_tcp_defer_accept (int timeout)
 

额外继承的成员函数

- Protected 成员函数 继承自 acl::acl::noncopyable
 noncopyable ()
 
 ~noncopyable ()
 

详细描述

服务端监听套接口类,接收客户端连接,并创建客户端流连接对象

在文件 server_socket.hpp23 行定义.

构造及析构函数说明

◆ server_socket() [1/4]

acl::server_socket::server_socket ( unsigned  flag,
int  backlog 
)

构造函数

参数
flag{unsigned} 定义参见 OPEN_FLAG_XXX
backlog{int} 监听套接口队列长度

◆ server_socket() [2/4]

acl::server_socket::server_socket ( ACL_VSTREAM sstream)

构造函数,调用本构造函数后禁止再调用 open 方法

参数
sstream{ACL_VSTREAM*} 外部创建的监听流对象,本类仅使用 但并不释放,由应用自行关闭该监听对象

◆ server_socket() [3/4]

acl::server_socket::server_socket ( int  fd)

构造函数,调用本构造函数后禁止再调用 open 方法

参数
fd{ACL_SOCKET} 外部创建的监听句柄,本类仅使用但并不释放, 由应用自行关闭该监听句柄

◆ server_socket() [4/4]

acl::server_socket::server_socket ( void  )

◆ ~server_socket()

acl::server_socket::~server_socket ( void  )

成员函数说明

◆ accept()

socket_stream* acl::server_socket::accept ( int  timeout = 0,
bool *  etimed = NULL 
)

接收客户端连接并创建客户端连接流

参数
timeout{int} 当该值 > 0 时,采用超时方式接收客户端连接, 若在指定时间内未获得客户端连接,则返回 NULL
etimed{bool*} 当此指针非 NULL 时,如果因超时导致该函数返回 NULL,则此值被置为 true
返回
{socket_stream*} 返回空表示接收失败或超时

◆ close()

bool acl::server_socket::close ( void  )

关闭已经打开的监听套接口

返回
{bool} 是否正常关闭

◆ get_addr()

const char* acl::server_socket::get_addr ( void  ) const
inline

获得监听的地址

返回
{const char*} 返回值非空指针

在文件 server_socket.hpp109 行定义.

110  {
111  return addr_.c_str();
112  }
char * c_str() const

◆ open()

bool acl::server_socket::open ( const char *  addr)

开始监听给定服务端地址

参数
addr{const char*} 服务器监听地址,格式为: ip:port;在 unix 环境下,还可以是域套接口,格式为:/path/xxx,在 Linux 平台下,如果域套接口地址为:@xxx 格式,即第一个字母为 @ 则 内部自动启用 Linux 下的抽象域套接字方式(abstract unix socket)
返回
{bool} 监听是否成功

◆ opened()

bool acl::server_socket::opened ( void  ) const

判断当前监听套接口是否打开着

返回
{bool}

◆ set_tcp_defer_accept()

void acl::server_socket::set_tcp_defer_accept ( int  timeout)

设置监听套接字的延迟接收功能,即当客户端连接上有数据时才将该连接返回 给应用,目前该功能仅支持 Linux

参数
timeout{int} 如果客户端连接在规定的时间内未发来数据, 也将该连接返回给应用

◆ sock_handle()

int acl::server_socket::sock_handle ( void  ) const
inline

当正常监听服务器地址后调用本函数可以获得监听套接口

返回
{int}

在文件 server_socket.hpp121 行定义.

123  {
124  return fd_;
125  }

◆ unbind()

int acl::server_socket::unbind ( void  )

将监听套接口从服务监听对象中解绑

返回
{SOCKET} 返回被解绑的句柄

该类的文档由以下文件生成: