[/ Copyright (c) 2013-2016 Vinnie Falco (vinnie dot falco at gmail 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) ] [section:example Examples] These usage examples are intended to quickly impress upon readers the flavor of the library. They are complete programs which may be built and run. Source code and build scripts for these programs may be found in the examples directory. [heading HTTP GET] Use HTTP to request the root page from a website and print the response: ``` #include #include #include #include int main() { // Normal boost::asio setup std::string const host = "boost.org"; boost::asio::io_service ios; boost::asio::ip::tcp::resolver r{ios}; boost::asio::ip::tcp::socket sock{ios}; boost::asio::connect(sock, r.resolve(boost::asio::ip::tcp::resolver::query{host, "http"})); // Send HTTP request using beast beast::http::request_v1 req; req.method = "GET"; req.url = "/"; req.version = 11; req.headers.replace("Host", host + ":" + std::to_string(sock.remote_endpoint().port())); req.headers.replace("User-Agent", "Beast"); beast::http::prepare(req); beast::http::write(sock, req); // Receive and print HTTP response using beast beast::streambuf sb; beast::http::response_v1 resp; beast::http::read(sock, sb, resp); std::cout << resp; } ``` [heading WebSocket] Establish a WebSocket connection, send a message and receive the reply: ``` #include #include #include #include #include int main() { // Normal boost::asio setup std::string const host = "echo.websocket.org"; boost::asio::io_service ios; boost::asio::ip::tcp::resolver r{ios}; boost::asio::ip::tcp::socket sock{ios}; boost::asio::connect(sock, r.resolve(boost::asio::ip::tcp::resolver::query{host, "80"})); // WebSocket connect and send message using beast beast::websocket::stream ws{sock}; ws.handshake(host, "/"); ws.write(boost::asio::buffer("Hello, world!")); // Receive WebSocket message, print and close using beast beast::streambuf sb; beast::websocket::opcode op; ws.read(op, sb); ws.close(beast::websocket::close_code::normal); std::cout << to_string(sb.data()) << "\n"; } ``` [heading HTTP Crawl] This example retrieves the page at each of the most popular domains as measured by Alexa. * [@examples/http_crawl.cpp] [heading HTTP Server] This example demonstrates both synchronous and asynchronous server implementations. It also provides an example of implementing a [*Body] type, in `file_body`. * [@examples/file_body.hpp] * [@examples/http_async_server.hpp] * [@examples/http_sync_server.hpp] * [@examples/http_server.cpp] [heading Listings] These are stand-alone listings of the HTTP and WebSocket examples. * [@examples/http_example.cpp] * [@examples/websocket_example.cpp] [endsect]