包含 <arknet/arknet.hpp> 可使用已启用的传输能力,也可以只包含特定的公开头文件。
数据库客户端需要显式包含对应头文件。安全传输头文件和 MySQL 连接需要启用 ARKNET_ENABLE_SSL。
公开类型
| 类型族 | 客户端 | 服务端/Session | 指南 |
|---|---|---|---|
| TCP | tcp_client、tcp_client_t<Derived> |
tcp_server、tcp_server_t<Session>、tcp_session_t<Derived> |
TCP |
| UDP | udp_client |
udp_server、udp_session;独立的 udp_cast |
UDP |
| RUDP | rudp_client、rudp_client_t<Derived> |
rudp_server、rudp_server_t<Session>、rudp_session_t<Derived> |
RUDP |
| ARQ 核心 | arq::control_block、arq::options |
不依赖 Asio,调用必须串行 | ARQ 配置 |
| 单次 HTTP 请求 | http_request、http_request_options |
回调或 future 完成通知、取消与超时 | 请求 |
| WebSocket | ws_client |
ws_server、ws_session |
WebSocket |
| HTTP | http_client |
http_server、http_session、http_router |
HTTP、路由 |
| TLS TCP | tcps_client |
tcps_server、tcps_session |
TLS |
| HTTPS | https_client |
https_server、https_session |
HTTP |
| 安全 WebSocket | wss_client |
wss_server、wss_session |
TLS |
| MySQL | mysql::connection、mysql::pool |
连接池独占租约;显式包含 <arknet/mysql/connection.hpp> 或 <arknet/mysql/pool.hpp> |
MySQL |
| Redis | redis::client、redis::pool;安全传输使用 redis::tls_client、redis::tls_pool |
连接池独占租约;显式包含 <arknet/redis/client.hpp> 或 <arknet/redis/pool.hpp> |
Redis |
| 调度 | timer、io_pool、io_t |
iopool 是 io_pool 的别名 |
运行时、IO 模型 |
协议指南说明 CRTP 变体与公开头文件路径。UDP 的端点 Session 共享服务端
数据报 socket。HTTP 消息类型位于 arknet::http,
WebSocket 协议类型位于 arknet::websocket。
常用操作
下列操作适用于传输端点。数据库客户端的请求、结果和关闭约定见 数据库指南。
| 分类 | API | 约定 |
|---|---|---|
| 启动 | start(host, port, ...)、客户端 async_start(...) |
检查返回值和 get_last_error();异步启动通过监听回调报告结果。 |
| 监听 | bind_recv、bind_connect、bind_disconnect、bind_start、bind_stop |
客户端/服务端与协议的签名不同,应在启动前绑定。 |
| 发送 | async_send(data, callback)、future 重载、send |
入队和写完成是不同结果,见所有权与线程。 |
| 停止 | request_stop、wait_stopped、stop |
网络对象保持存活至停止完成;IO 回调请求停止,所有者等待。 |
| 配额 | set_max_send_buffer_size、get_queued_send_buffer_size |
超限以 no_buffer_space 拒绝;默认配额为 16 MiB/1024 个操作。 |
| HTTP 上限 | set_http_header_limit、set_http_body_limit |
默认头部 8192 字节、body 16 MiB;新配置从下一条消息的解析器生效。 |
| 调度 | post、dispatch、start_timer、stop_timer |
使用对象的 IO lane 执行,不能阻塞工作线程。 |
| 错误状态 | arknet::get_last_error() |
线程局部状态;在相关调用/回调线程检查,避免被后续操作覆盖。 |
扩展与源码参考
自定义客户端/Session 继承对应协议的 *_t<Derived>,
服务端模板接受 Session 类型。参见架构和永久
测试。
base/impl 与 detail 下的实现头文件不是稳定的公共 API。