欢迎来到程序员中文网!

首页 Linux Mysql C++ Python PHP JavaScript 资源下载 动态 开源推荐
我要投稿 投诉建议

C++ 网络编程:使用 Boost.Asio 实现简易 HTTP 客户端

时间:2026年08月12日 04:46:50 浏览:1

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 网络库的基础。