diff options
author | 2024-04-22 08:04:58 +1000 | |
---|---|---|
committer | 2024-04-22 08:04:58 +1000 | |
commit | 184292b730f4236bd4840e780fdad97ee060ec84 (patch) | |
tree | 67902161a465fe92aec78ca502de07092b8cde0f /3rdparty/asio/src/examples/cpp03/http/client/sync_client.cpp | |
parent | 24154bc1f00790f344120b3a85175d6f616c5ad0 (diff) |
3rdparty/asio: Updated to 1.30.2
Diffstat (limited to '3rdparty/asio/src/examples/cpp03/http/client/sync_client.cpp')
-rw-r--r-- | 3rdparty/asio/src/examples/cpp03/http/client/sync_client.cpp | 106 |
1 files changed, 0 insertions, 106 deletions
diff --git a/3rdparty/asio/src/examples/cpp03/http/client/sync_client.cpp b/3rdparty/asio/src/examples/cpp03/http/client/sync_client.cpp deleted file mode 100644 index fde984a6f4f..00000000000 --- a/3rdparty/asio/src/examples/cpp03/http/client/sync_client.cpp +++ /dev/null @@ -1,106 +0,0 @@ -// -// sync_client.cpp -// ~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#include <iostream> -#include <istream> -#include <ostream> -#include <string> -#include <asio.hpp> - -using asio::ip::tcp; - -int main(int argc, char* argv[]) -{ - try - { - if (argc != 3) - { - std::cout << "Usage: sync_client <server> <path>\n"; - std::cout << "Example:\n"; - std::cout << " sync_client www.boost.org /LICENSE_1_0.txt\n"; - return 1; - } - - asio::io_context io_context; - - // Get a list of endpoints corresponding to the server name. - tcp::resolver resolver(io_context); - tcp::resolver::results_type endpoints = resolver.resolve(argv[1], "http"); - - // Try each endpoint until we successfully establish a connection. - tcp::socket socket(io_context); - asio::connect(socket, endpoints); - - // Form the request. We specify the "Connection: close" header so that the - // server will close the socket after transmitting the response. This will - // allow us to treat all data up until the EOF as the content. - asio::streambuf request; - std::ostream request_stream(&request); - request_stream << "GET " << argv[2] << " HTTP/1.0\r\n"; - request_stream << "Host: " << argv[1] << "\r\n"; - request_stream << "Accept: */*\r\n"; - request_stream << "Connection: close\r\n\r\n"; - - // Send the request. - asio::write(socket, request); - - // Read the response status line. The response streambuf will automatically - // grow to accommodate the entire line. The growth may be limited by passing - // a maximum size to the streambuf constructor. - asio::streambuf response; - asio::read_until(socket, response, "\r\n"); - - // Check that response is OK. - std::istream response_stream(&response); - std::string http_version; - response_stream >> http_version; - unsigned int status_code; - response_stream >> status_code; - std::string status_message; - std::getline(response_stream, status_message); - if (!response_stream || http_version.substr(0, 5) != "HTTP/") - { - std::cout << "Invalid response\n"; - return 1; - } - if (status_code != 200) - { - std::cout << "Response returned with status code " << status_code << "\n"; - return 1; - } - - // Read the response headers, which are terminated by a blank line. - asio::read_until(socket, response, "\r\n\r\n"); - - // Process the response headers. - std::string header; - while (std::getline(response_stream, header) && header != "\r") - std::cout << header << "\n"; - std::cout << "\n"; - - // Write whatever content we already have to output. - if (response.size() > 0) - std::cout << &response; - - // Read until EOF, writing data to output as we go. - asio::error_code error; - while (asio::read(socket, response, - asio::transfer_at_least(1), error)) - std::cout << &response; - if (error != asio::error::eof) - throw asio::system_error(error); - } - catch (std::exception& e) - { - std::cout << "Exception: " << e.what() << "\n"; - } - - return 0; -} |