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

TCP客户端类 更多...

#include <tcp_client.hpp>

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

Public 成员函数

 tcp_client_base ()=default
 默认构造函数
 tcp_client_base (dns_client dns)
 构造函数(带DNS客户端)
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对象
Protected 成员函数 继承自 tcp_client_base
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
 处理异常

额外继承的成员函数

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_
 异常处理器

详细描述

TCP客户端类

普通TCP客户端实现,不加密。

在文件 tcp_client.hpp390 行定义.

成员函数说明

◆ create_socket()

unique_ptr< tcp_socket > tcp_client::create_socket ( )
inlineoverrideprotectedvirtual

创建新的socket对象

返回
socket智能指针

实现了 tcp_client_base.

在文件 tcp_client.hpp395 行定义.

引用了 make_unique().

◆ tcp_client_base()

构造函数(带DNS客户端)

参数
dnsDNS客户端

在文件 tcp_client.hpp121 行定义.


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