Beast Logo


Asio Refresher

[Warning] Warning

Beast does not manage sockets, make outgoing connections, accept incoming connections, handle timeouts, close endpoints, do name lookups, deal with TLS certificates, perform authentication, or otherwise handle any aspect of connection management. This is left to the interfaces already existing on the underlying streams.

Library stream algorithms require a boost::asio::ip::tcp::socket, boost::asio::ssl::stream, or other Stream object that has already established communication with an endpoint. This example is provided as a reminder of how to work with sockets:

char const* const host = "";
boost::asio::ip::tcp::resolver r{ios};
boost::asio::ip::tcp::socket stream{ios};
boost::asio::connect(stream, r.resolve({host, "http"}));

// At this point `stream` is a connected to a remote
// host and may be used to perform stream operations.

Throughout this documentation identifiers with the following names have special meaning:

Table 1. Global Variables




A variable of type boost::asio::io_service which is running on one separate thread, and upon which a boost::asio::io_service::work object has been constructed.


A variable of type boost::asio::ip::tcp::socket which has already been connected to a remote host.


A variable of type boost::asio::ssl::stream<boost::asio::ip::tcp::socket> which is already connected and has handshaked with a remote host.


A variable of type websocket::stream<boost::asio::ip::tcp::socket> which is already connected with a remote host.