boost asio使用 发表于 2023-07-20 | 更新于: 2023-11-19 | | 本文被围观了 次 例子1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859void TestHttps(const char *host){ boost::asio::io_service io; ip::tcp::resolver resolver(io); // handle DNS ? ip::tcp::resolver::query query(host, "443"); boost::asio::ssl::context ctx(boost::asio::ssl::context::sslv23); boost::asio::ssl::stream<boost::asio::ip::tcp::socket> sock(io, ctx); boost::asio::streambuf response; response.prepare(100); resolver.async_resolve(query, [&](const boost::system::error_code &ec, ip::tcp::resolver::iterator iter) { printf("resolve %s", ec.message().c_str()); if (iter != ip::tcp::resolver::iterator()) { /* code */ async_connect(sock.lowest_layer(), iter, [&](const boost::system::error_code &ec2, ip::tcp::resolver::iterator iter2) { printf("connect %s %s", iter2->endpoint().address().to_string().c_str(), ec2.message().c_str()); if (!ec2) { //ssl建连 sock.async_handshake(boost::asio::ssl::stream_base::client, [&](const boost::system::error_code &ec3) { printf("ssl handshake %s", ec3.message().c_str()); if (!ec3) { //发送http请求 string req = "GET / HTTP/1.1\r\nAccept: */*\r\nHost: " + query.host_name() + "\r\n\r\n"; printf("send http request \n%s", req.c_str()); boost::asio::async_write(sock, boost::asio::buffer(req.c_str(), req.size()), [&](const boost::system::error_code &ec4, std::size_t bytes_transferred) { printf("send http %s,bytes_transferred:%d", ec4.message().c_str(),bytes_transferred); if (bytes_transferred > 0) { //接收http返回 boost::asio::async_read(sock, response, [&](const boost::system::error_code &ec5, std::size_t bytes_transferred) { printf("recv http %s,bytes_transferred:%d", ec5.message().c_str(), bytes_transferred); if (bytes_transferred > 0) { //printf("recv http content:%s", response.data().); } }); } }); } }); } }); } while (iter != ip::tcp::resolver::iterator()) { printf("resolve %s\n", iter->endpoint().address().to_string().c_str()); ++iter; } }); io.run(); printf("io_service release\n");} 欢迎您扫一扫上面的微信公众号,订阅我的博客! 坚持原创技术分享,您的支持将鼓励我继续创作! 打赏 微信支付 本文作者: nephen 本文链接: https://www.nephen.cn/posts/3c0405d8/ 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!