C++ 网络编程入门:使用 Boost.Asio 实现简易客户端
Boost.Asio 是跨平台网络库,支持同步和异步操作。
同步 HTTP GET 请求
#include <boost/asio.hpp>
#include <iostream>
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 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++ 高性能网络编程的基础库。
