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

SSL/TLS客户端类 更多...

#include <tcp_client.hpp>

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

Public 成员函数

 ssl_client ()=default
 默认构造函数
 ssl_client (ssl_context ctx)
 构造函数(带SSL上下文)
void set_ssl_context (ssl_context ctx)
 设置SSL上下文
void set_verify_peer (bool verify)
 设置是否验证对等方证书
void set_sni_hostname (string hostname)
 设置SNI主机名
bool load_ca_file (const string &ca_file)
 加载CA证书文件
bool load_ca_path (const string &ca_path)
 加载CA证书目录
NEFORCE_NODISCARD string_view peer_certificate_info () const
 获取对等方证书信息
NEFORCE_NODISCARD string_view cipher_name () const
 获取当前密码套件名称
NEFORCE_NODISCARD string_view protocol_version () const
 获取当前协议版本
NEFORCE_NODISCARD bool has_ssl_context () const noexcept
 检查是否有SSL上下文
NEFORCE_NODISCARD bool is_ssl_initialized () const noexcept
 检查SSL是否已初始化
NEFORCE_NODISCARD ssl_socketssl_socket_ref ()
 获取SSL socket引用
NEFORCE_NODISCARD const ssl_socketssl_socket_ref () const
 获取SSL socket常量引用
Public 成员函数 继承自 tcp_client_base
 tcp_client_base ()=default
 默认构造函数
 tcp_client_base (dns_client dns)
 构造函数(带DNS客户端)
virtual ~tcp_client_base ()
 析构函数
void set_connect_timeout (milliseconds timeout)
 设置连接超时时间
NEFORCE_NODISCARD milliseconds connect_timeout () const noexcept
 获取连接超时时间
void set_send_timeout (milliseconds timeout)
 设置发送超时时间
NEFORCE_NODISCARD milliseconds send_timeout () const noexcept
 获取发送超时时间
void set_recv_timeout (milliseconds timeout)
 设置接收超时时间
NEFORCE_NODISCARD milliseconds recv_timeout () const noexcept
 获取接收超时时间
void set_auto_reconnect (bool enable, int max_attempts=3)
 设置自动重连
NEFORCE_NODISCARD bool is_auto_reconnect () const noexcept
 检查是否启用自动重连
NEFORCE_NODISCARD int reconnect_attempts () const noexcept
 获取最大重连次数
NEFORCE_NODISCARD int current_reconnect_attempt () const noexcept
 获取当前重连尝试次数
void set_reconnect_delay (milliseconds delay)
 设置重连延迟时间
NEFORCE_NODISCARD milliseconds reconnect_delay () const noexcept
 获取重连延迟时间
void set_prefer_ipv6 (bool prefer) noexcept
 设置是否优先使用IPv6
NEFORCE_NODISCARD bool prefer_ipv6 () const noexcept
 检查是否优先使用IPv6
void set_dns_server (dns_client::config cfg)
 设置DNS服务器配置
void set_exception_handler (exception_handler_t handler)
 设置异常处理器
void set_connect_callback (connect_callback_t callback)
 设置连接成功回调
void set_disconnect_callback (disconnect_callback_t callback)
 设置断开连接回调
virtual bool connect (const string &host, ports port)
 连接到服务器
void disconnect () noexcept
 断开连接
ssize_t send (const void *data, size_t length)
 发送数据
ssize_t send (string_view data)
 发送字符串数据
bool send_all (const void *data, size_t length)
 发送所有数据(保证全部发送)
bool send_all (string_view data)
 发送所有字符串数据
ssize_t receive (void *buffer, size_t length)
 接收数据
vector< char > receive_all (size_t max_size=0)
 接收所有可用数据
bool receive_exact (memory_view< char > buffer)
 接收指定大小的数据
optional< stringreceive_line (size_t max_length=8192)
 接收一行数据(以\n结尾)
NEFORCE_NODISCARD bool is_connected () const noexcept
 检查是否已连接
NEFORCE_NODISCARD bool is_reconnecting () const noexcept
 检查是否正在重连
NEFORCE_NODISCARD const stringconnected_host () const noexcept
 获取当前连接的主机名
NEFORCE_NODISCARD ports connected_port () const noexcept
 获取当前连接的端口
NEFORCE_NODISCARD tcp_socketsocket ()
 获取底层socket引用
NEFORCE_NODISCARD const tcp_socketsocket () const
 获取底层socket常量引用
NEFORCE_NODISCARD dns_clientget_dns_client () noexcept
 获取DNS客户端
NEFORCE_NODISCARD const dns_clientget_dns_client () const noexcept
 获取DNS客户端常量引用

Protected 成员函数

unique_ptr< tcp_socketcreate_socket () override
 创建新的socket对象
bool post_connect () override
 连接建立后的额外处理
void pre_disconnect () override
 连接断开前的清理工作
Protected 成员函数 继承自 tcp_client_base
bool try_connect_to_ip (const string &ip, ports port)
 尝试连接到指定IP
bool reconnect_if_needed ()
 需要时执行重连
NEFORCE_ALWAYS_INLINE void handle_exception (const exception &e) const
 处理异常

额外继承的成员函数

Public 类型 继承自 tcp_client_base
using exception_handler_t = function<void(const exception&)>
 异常处理器类型
using connect_callback_t = function<void(const string&, ports)>
 连接回调类型
using disconnect_callback_t = function<void()>
 断开回调类型
Protected 属性 继承自 tcp_client_base
dns_client dns_
 DNS解析客户端
unique_ptr< tcp_socketsocket_
 TCP socket
string connected_host_
 已连接的主机名
ports connected_port_
 已连接的端口
int reconnect_attempts_ = 3
 最大重连次数
atomic< int > current_reconnect_attempt_ {0}
 当前重连次数
milliseconds connect_timeout_ {5000}
 连接超时
milliseconds send_timeout_ {5000}
 发送超时
milliseconds recv_timeout_ {5000}
 接收超时
milliseconds reconnect_delay_ {1000}
 重连延迟
bool auto_reconnect_ = false
 是否自动重连
bool prefer_ipv6_ = false
 是否优先IPv6
atomic< bool > is_reconnecting_ {false}
 是否正在重连
connect_callback_t connect_callback_
 连接成功回调
disconnect_callback_t disconnect_callback_
 断开连接回调
exception_handler_t exception_handler_
 异常处理器

详细描述

SSL/TLS客户端类

实现SSL/TLS加密的TCP客户端,支持证书验证和SNI。

使用示例:

// 创建SSL客户端
ssl_client client;
// 加载CA证书(可选)
client.load_ca_file("ca-bundle.crt");
// 设置SNI主机名
client.set_sni_hostname("example.com");
// 设置验证模式
client.set_verify_peer(true);
// 连接HTTPS服务器
if (client.connect("example.com", 443)) {
// 发送HTTPS请求
client.send_all("GET / HTTP/1.1\r\nHost: example.com\r\n\r\n");
// 获取证书信息
println("Cipher: ", client.cipher_name());
println("Protocol: ", client.protocol_version());
}
ssl_client()=default
默认构造函数
NEFORCE_NODISCARD string_view cipher_name() const
获取当前密码套件名称
NEFORCE_NODISCARD string_view protocol_version() const
获取当前协议版本
void set_sni_hostname(string hostname)
设置SNI主机名
bool load_ca_file(const string &ca_file)
加载CA证书文件
void set_verify_peer(bool verify)
设置是否验证对等方证书
bool send_all(const void *data, size_t length)
发送所有数据(保证全部发送)
virtual bool connect(const string &host, ports port)
连接到服务器
void println(Args &&... args)
打印多个值并换行

在文件 tcp_client.hpp436 行定义.

构造及析构函数说明

◆ ssl_client()

ssl_client::ssl_client ( ssl_context ctx)
explicit

构造函数(带SSL上下文)

参数
ctxSSL上下文

成员函数说明

◆ cipher_name()

NEFORCE_NODISCARD string_view ssl_client::cipher_name ( ) const

获取当前密码套件名称

返回
密码套件名称

◆ create_socket()

unique_ptr< tcp_socket > ssl_client::create_socket ( )
inlineoverrideprotectedvirtual

创建新的socket对象

返回
socket智能指针

实现了 tcp_client_base.

在文件 tcp_client.hpp444 行定义.

引用了 make_unique().

◆ has_ssl_context()

NEFORCE_NODISCARD bool ssl_client::has_ssl_context ( ) const
inlinenoexcept

检查是否有SSL上下文

返回
有返回true

在文件 tcp_client.hpp520 行定义.

◆ is_ssl_initialized()

NEFORCE_NODISCARD bool ssl_client::is_ssl_initialized ( ) const
inlinenoexcept

检查SSL是否已初始化

返回
已初始化返回true

在文件 tcp_client.hpp526 行定义.

◆ load_ca_file()

bool ssl_client::load_ca_file ( const string & ca_file)

加载CA证书文件

参数
ca_fileCA证书文件路径
返回
加载成功返回true

◆ load_ca_path()

bool ssl_client::load_ca_path ( const string & ca_path)

加载CA证书目录

参数
ca_pathCA证书目录路径
返回
加载成功返回true

◆ peer_certificate_info()

NEFORCE_NODISCARD string_view ssl_client::peer_certificate_info ( ) const

获取对等方证书信息

返回
证书信息字符串

◆ post_connect()

bool ssl_client::post_connect ( )
overrideprotectedvirtual

连接建立后的额外处理

返回
处理成功返回true

重载 tcp_client_base .

◆ protocol_version()

NEFORCE_NODISCARD string_view ssl_client::protocol_version ( ) const

获取当前协议版本

返回
协议版本字符串

◆ set_sni_hostname()

void ssl_client::set_sni_hostname ( string hostname)

设置SNI主机名

参数
hostname主机名
异常
ssl_exception已连接时抛出

◆ set_ssl_context()

void ssl_client::set_ssl_context ( ssl_context ctx)

设置SSL上下文

参数
ctxSSL上下文
异常
ssl_exception已连接或上下文无效时抛出

◆ set_verify_peer()

void ssl_client::set_verify_peer ( bool verify)

设置是否验证对等方证书

参数
verify是否验证
异常
ssl_exception已连接时抛出

◆ ssl_socket_ref() [1/2]

NEFORCE_NODISCARD ssl_socket & ssl_client::ssl_socket_ref ( )

获取SSL socket引用

返回
SSL socket引用
异常
value_exceptionSSL未就绪时抛出

◆ ssl_socket_ref() [2/2]

NEFORCE_NODISCARD const ssl_socket & ssl_client::ssl_socket_ref ( ) const

获取SSL socket常量引用

返回
SSL socket常量引用
异常
value_exceptionSSL未就绪时抛出

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