Asio C++:高性能网络编程利器(通过示例程序展示多客户端并发、异步通信和定时器组合) - 详解
用来做什么的就是1️⃣ Asio C++ Library
先说下载地址:https://download.csdn.net/download/2501_91893428/91935928
Asio是一个跨平台的 C++ 库,核心功能是提供同步和异步的 I/O 操作,主要用途包括:
网络编程
TCP/UDP 客户端和服务器
异步内容收发、连接管理
并发和异步任务处理
支持异步操作回调
支持多线程安全 I/O 服务
定时器和事件驱动系统
提供定时器(
steady_timer,deadline_timer)可用于周期任务、延时操控
SSL/TLS 加密通信(通过
asio::ssl)可以轻松实现 HTTPS、加密客户端/服务器
协程支持
C++20
co_await支持,使异步代码写法更接近同步代码
简单来说,Asio 是一个构建高性能网络应用和事件驱动系统的基础库。
2️⃣ 一个 Demo
下面演示一个异步 TCP 服务器,可以处理多个客户端,并周期性发送消息(使用定时器)。
#include
#include
#include
#include
using asio::ip::tcp;
class Session : public std::enable_shared_from_this {
public:
Session(tcp::socket socket)
: socket_(std::move(socket)), timer_(socket_.get_executor()) {}
void start() {
do_read();
start_timer();
}
private:
tcp::socket socket_;
asio::streambuf buffer_;
asio::steady_timer timer_;
void do_read() {
auto self = shared_from_this();
asio::async_read_until(socket_, buffer_, "\n",
[this, self](std::error_code ec, std::size_t length) {
if (!ec) {
std::istream is(&buffer_);
std::string line;
std::getline(is, line);
std::cout (std::move(socket))->start();
}
do_accept(); // 接受下一个客户端
});
}
};
int main() {
try {
asio::io_context io_context;
Server server(io_context, 12345);
io_context.run();
} catch (std::exception& e) {
std::cerr << "Exception: " << e.what() << std::endl;
}
return 0;
}
✅ Demo 说明
Server 类:监听 TCP 端口,并异步接受客户端连接。
Session 类:每个客户端对应一个 session,异步读取客户端消息并周期性发送“Ping”消息。
异步操作:
async_read_until读取客户端消息async_write向客户端发送数据steady_timer定时触发事件
这个示例展示了多客户端并发、异步通信和定时器组合,比基础同步示例更接近实际网络应用场景。

浙公网安备 33010602011771号