下面的完整程序启动本地 TCP 回显服务端与客户端,验证回复后停止两者。
创建应用项目
按安装与配置安装依赖。在 main.cpp 所在目录创建
CMakeLists.txt,并将 /path/to/arknet 改为实际源码路径:
cmake_minimum_required(VERSION 3.21)
project(arknet_echo LANGUAGES CXX)
add_subdirectory(/path/to/arknet arknet-build)
add_executable(arknet_echo main.cpp)
target_link_libraries(arknet_echo PRIVATE arknet::arknet)arknet 是 header-only 库;接口目标只传递构建配置和依赖。
添加客户端与服务端
将下面的完整程序放入 main.cpp:
#include <chrono>
#include <future>
#include <string>
#include <arknet/arknet.hpp>
using namespace std::chrono_literals;
int main()
{
arknet::tcp_server server;
server.bind_recv([](auto& session, std::string_view data)
{
session->async_send(data);
});
if (!server.start("127.0.0.1", 0, arknet::use_dgram))
return 1;
arknet::tcp_client client;
client.set_auto_reconnect(false);
std::promise<std::string> reply;
client.bind_recv([&](std::string_view data)
{
reply.set_value(std::string(data));
});
if (!client.start("127.0.0.1", server.get_listen_port(), arknet::use_dgram))
return 2;
auto result = reply.get_future();
if (!client.async_send("hello"))
return 3;
const bool ready = result.wait_for(5s) == std::future_status::ready;
const bool correct = ready && result.get() == "hello";
client.stop();
server.stop();
return correct ? 0 : 4;
}构建并检查回显
cmake -S . -B build
cmake --build build --parallel 3
./build/arknet_echo退出码为 0 表示客户端收到 hello,且两个端点已停止。
使用 Visual Studio 时,构建命令添加 --config Release,运行 build/Release/arknet_echo.exe。
下一步
按业务选择 TCP、UDP、 WebSocket、HTTP 与路由或 TLS。将对象用于服务前,阅读 生命周期与发送;共享 context 前,阅读 IO 模型。