Boost.Asio 简介
Boost.Asio 是一个跨平台的网络和底层 I/O 库,支持同步/异步操作。
同步 HTTP GET 请求
#include <boost/asio.hpp>
#include <iostream>
#include <string>
using boost::asio::ip::tcp;
int main() {
boost::asio::io_context io;
tcp::resolver resolver(io);
tcp::socket socket(io);
// 解析域名
auto endpoints = resolver.resolve("httpbin.org", "80");
boost::asio::connect(socket, endpoints);
// 发送请求
std::string request = "GET /get HTTP/1.1\r\nHost: httpbin.org\r\nConnection: close\r\n\r\n";
boost::asio::write(socket, boost::asio::buffer(request));
// 读取响应
boost::asio::streambuf response;
boost::asio::read_until(socket, response, "\r\n\r\n");
std::istream response_stream(&response);
std::string header;
while (std::getline(response_stream, header) && header != "\r");
std::cout << "Response header received" << std::endl;
return 0;
}异步示例
socket.async_connect(endpoints, [&](boost::system::error_code ec) {
if (!ec) {
socket.async_write_some(boost::asio::buffer(request), callback);
}
});
io.run();Boost.Asio 是 C++ 高性能网络编程的首选库,也是 C++20 网络库的基础。
