|  | Home | Libraries | People | FAQ | More | 
Asynchronously establishes a socket connection by trying each endpoint in a sequence.
template<
    typename Protocol,
    typename EndpointSequence,
    typename RangeConnectHandler>
DEDUCED async_connect(
    basic_socket< Protocol > & s,
    const EndpointSequence & endpoints,
    RangeConnectHandler && handler,
    typename enable_if< is_endpoint_sequence< EndpointSequence >::value >::type *  = 0);
          This function attempts to connect a socket to one of a sequence of endpoints.
          It does this by repeated calls to the socket's async_connect
          member function, once for each endpoint in the sequence, until a connection
          is successfully established.
        
The socket to be connected. If the socket is already open, it will be closed.
A sequence of endpoints.
The handler to be called when the connect operation completes. Copies will be made of the handler as required. The function signature of the handler must be:
void handler( // Result of operation. if the sequence is empty, set to // boost::asio::error::not_found. Otherwise, contains the // error from the last connection attempt. const boost::system::error_code& error, // On success, the successfully connected endpoint. // Otherwise, a default-constructed endpoint. const typename Protocol::endpoint& endpoint );
                Regardless of whether the asynchronous operation completes immediately
                or not, the handler will not be invoked from within this function.
                Invocation of the handler will be performed in a manner equivalent
                to using boost::asio::io_context::post().
              
tcp::resolver r(io_context);
tcp::resolver::query q("host", "service");
tcp::socket s(io_context);
// ...
r.async_resolve(q, resolve_handler);
// ...
void resolve_handler(
    const boost::system::error_code& ec,
    tcp::resolver::results_type results)
{
  if (!ec)
  {
    boost::asio::async_connect(s, results, connect_handler);
  }
}
// ...
void connect_handler(
    const boost::system::error_code& ec,
    const tcp::endpoint& endpoint)
{
  // ...
}