NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
tcp_server_base类 参考abstract

TCP服务器基类 更多...

#include <tcp_server.hpp>

类 tcp_server_base 继承关系图:
[图例]

Public 类型

using client_handler_t = function<void(tcp_socket)>
 客户端处理器类型
using exception_handler_t = function<void(const exception&)>
 异常处理器类型

Public 成员函数

 tcp_server_base (ports port, size_t worker_count=thread_pool::max_thread_threshhold())
 构造函数
virtual ~tcp_server_base ()
 析构函数
bool set_client_handler (client_handler_t handler)
 设置客户端处理器
bool set_exception_handler (exception_handler_t handler)
 设置异常处理器
virtual bool start (int backlog=SOMAXCONN) noexcept
 启动服务器
void stop ()
 停止服务器
NEFORCE_NODISCARD bool is_running () const noexcept
 检查服务器是否运行中
NEFORCE_NODISCARD ports port () const noexcept
 获取监听端口

Protected 成员函数

void accept_loop ()
 接受连接的主循环
virtual void handle_client (tcp_socket client)
 处理单个客户端连接
virtual optional< tcp_socketaccept_one ()=0
 创建一个客户端连接
virtual void create_acceptor (const ip_address &endpoint, int backlog)=0
 创建并配置acceptor

Protected 属性

unique_ptr< tcp_acceptoracceptor_
 TCP接受器
ports port_
 监听端口
atomic< bool > running_ {false}
 运行标志
vector< threadworker_threads_
 工作线程列表
thread_pool client_pool_
 客户端处理线程池
client_handler_t client_handler_
 客户端处理器
exception_handler_t exception_handler_
 异常处理器

详细描述

TCP服务器基类

提供TCP服务器的核心功能,包括连接接受、线程池管理、 客户端处理和异常处理。派生类实现具体的接受器创建。

在文件 tcp_server.hpp33 行定义.

构造及析构函数说明

◆ tcp_server_base()

tcp_server_base::tcp_server_base ( ports port,
size_t worker_count = thread_pool::max_thread_threshhold() )
explicit

构造函数

参数
port监听端口
worker_count工作线程数(默认最大)
异常
value_exceptionworker_count为0时抛出

引用了 port().

◆ ~tcp_server_base()

virtual tcp_server_base::~tcp_server_base ( )
inlinevirtual

析构函数

自动停止服务器。

在文件 tcp_server.hpp101 行定义.

引用了 stop().

成员函数说明

◆ accept_loop()

void tcp_server_base::accept_loop ( )
protected

接受连接的主循环

该循环调用派生类实现的 accept_one() 获取已就绪的客户端 socket。 获取成功后提交至线程池,由 handle_client() 处理。

◆ accept_one()

virtual optional< tcp_socket > tcp_server_base::accept_one ( )
protectedpure virtual

创建一个客户端连接

返回
客户端socket,无连接返回none

派生类实现具体的连接接受逻辑。 支持阻塞和非阻塞模式。

◆ create_acceptor()

virtual void tcp_server_base::create_acceptor ( const ip_address & endpoint,
int backlog )
protectedpure virtual

创建并配置acceptor

参数
endpoint监听地址
backlog连接队列大小

派生类实现具体的acceptor创建和配置。

◆ handle_client()

virtual void tcp_server_base::handle_client ( tcp_socket client)
inlineprotectedvirtual

处理单个客户端连接

参数
client已建立连接的 socket

调用客户端处理器处理连接。 派生类可重写此方法以自定义处理逻辑。

在文件 tcp_server.hpp63 行定义.

引用了 client_handler_ , 以及 move().

◆ is_running()

NEFORCE_NODISCARD bool tcp_server_base::is_running ( ) const
inlinenoexcept

检查服务器是否运行中

返回
运行中返回true

在文件 tcp_server.hpp146 行定义.

引用了 running_.

◆ port()

NEFORCE_NODISCARD ports tcp_server_base::port ( ) const
inlinenoexcept

获取监听端口

返回
端口号

在文件 tcp_server.hpp152 行定义.

引用了 port_.

被这些函数引用 ssl_server::ssl_server() , 以及 tcp_server_base().

◆ set_client_handler()

bool tcp_server_base::set_client_handler ( client_handler_t handler)

设置客户端处理器

参数
handler处理器函数
返回
设置成功返回true

必须在服务器启动前设置。

◆ set_exception_handler()

bool tcp_server_base::set_exception_handler ( exception_handler_t handler)

设置异常处理器

参数
handler处理器函数
返回
设置成功返回true

◆ start()

virtual bool tcp_server_base::start ( int backlog = SOMAXCONN)
virtualnoexcept

启动服务器

参数
backlog连接队列大小(默认SOMAXCONN)
返回
启动成功返回true

创建acceptor,开始接受连接。 需要先设置客户端处理器。

ssl_server 重载.

◆ stop()

void tcp_server_base::stop ( )

停止服务器

停止接受新连接,等待现有连接处理完成。

被这些函数引用 ~tcp_server_base().


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