|
NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
|
TCP客户端基类 更多...
#include <tcp_client.hpp>
Public 类型 | |
| using | exception_handler_t = function<void(const exception&)> |
| 异常处理器类型 | |
| using | connect_callback_t = function<void(const string&, ports)> |
| 连接回调类型 | |
| using | disconnect_callback_t = function<void()> |
| 断开回调类型 | |
Public 成员函数 | |
| 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< string > | receive_line (size_t max_length=8192) |
| 接收一行数据(以\n结尾) | |
| NEFORCE_NODISCARD bool | is_connected () const noexcept |
| 检查是否已连接 | |
| NEFORCE_NODISCARD bool | is_reconnecting () const noexcept |
| 检查是否正在重连 | |
| NEFORCE_NODISCARD const string & | connected_host () const noexcept |
| 获取当前连接的主机名 | |
| NEFORCE_NODISCARD ports | connected_port () const noexcept |
| 获取当前连接的端口 | |
| NEFORCE_NODISCARD tcp_socket & | socket () |
| 获取底层socket引用 | |
| NEFORCE_NODISCARD const tcp_socket & | socket () const |
| 获取底层socket常量引用 | |
| NEFORCE_NODISCARD dns_client & | get_dns_client () noexcept |
| 获取DNS客户端 | |
| NEFORCE_NODISCARD const dns_client & | get_dns_client () const noexcept |
| 获取DNS客户端常量引用 | |
Protected 成员函数 | |
| virtual unique_ptr< tcp_socket > | create_socket ()=0 |
| 创建新的socket对象 | |
| virtual bool | post_connect () |
| 连接建立后的额外处理 | |
| virtual void | pre_disconnect () |
| 连接断开前的清理工作 | |
| 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 |
| 处理异常 | |
Protected 属性 | |
| dns_client | dns_ |
| DNS解析客户端 | |
| unique_ptr< tcp_socket > | socket_ |
| 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_ |
| 异常处理器 | |
|
inlineexplicit |
连接到服务器
| host | 主机名或IP地址 |
| port | 端口 |
支持域名解析,自动尝试所有解析到的IP地址。 根据prefer_ipv6_设置决定IPv4/IPv6优先级。
|
inlinenoexcept |
获取连接超时时间
在文件 tcp_client.hpp 第 145 行定义.
引用了 connect_timeout() , 以及 connect_timeout_.
被这些函数引用 connect_timeout().
|
inlinenoexcept |
|
inlinenoexcept |
|
protectedpure virtual |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlineprotected |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlineprotectedvirtual |
|
inlinenoexcept |
接收数据
| buffer | 接收缓冲区 |
| length | 缓冲区大小 |
接收所有可用数据
| max_size | 最大接收字节数(0表示无限制) |
持续接收直到连接关闭或达到最大大小。
| bool tcp_client_base::receive_exact | ( | memory_view< char > | buffer | ) |
接收指定大小的数据
| buffer | 接收缓冲区(指定大小) |
循环接收直到缓冲区填满或连接关闭。
接收一行数据(以\n结尾)
| max_length | 最大行长度 |
支持\r\n和\n换行符。
|
inlinenoexcept |
|
inlinenoexcept |
|
protected |
需要时执行重连
|
inlinenoexcept |
|
inline |
| bool tcp_client_base::send_all | ( | const void * | data, |
| size_t | length ) |
|
inline |
发送所有字符串数据
| data | 字符串视图 |
在文件 tcp_client.hpp 第 296 行定义.
引用了 data() , 以及 send_all().
被这些函数引用 send_all().
|
inlinenoexcept |
| void tcp_client_base::set_auto_reconnect | ( | bool | enable, |
| int | max_attempts = 3 ) |
|
inline |
| void tcp_client_base::set_connect_timeout | ( | milliseconds | timeout | ) |
|
inline |
|
inline |
|
inline |
|
inlinenoexcept |
| void tcp_client_base::set_reconnect_delay | ( | milliseconds | delay | ) |
| void tcp_client_base::set_recv_timeout | ( | milliseconds | timeout | ) |
| void tcp_client_base::set_send_timeout | ( | milliseconds | timeout | ) |
| NEFORCE_NODISCARD tcp_socket & tcp_client_base::socket | ( | ) |
| NEFORCE_NODISCARD const tcp_socket & tcp_client_base::socket | ( | ) | const |
尝试连接到指定IP
| ip | IP地址 |
| port | 端口 |