Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

async_connect (1 of 4 overloads)

Boost , Boost.Asio , async_connect

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Асинхронно устанавливает соединение сокетов, пробуя каждую конечную точку в последовательности.

template<
    typename Protocol,
    typename SocketService,
    typename Iterator,
    typename ComposedConnectHandler>
void-or-deduced async_connect(
    basic_socket< Protocol, SocketService > & s,
    Iterator begin,
    ComposedConnectHandler handler);

Эта функция пытается подключить сокет к одной из последовательности конечных точек. Он делает это путем повторных вызовов функции элемента сокета<async_connect>, один раз для каждой конечной точки в последовательности, пока соединение не будет успешно установлено.

Parameters

s

Сокет должен быть подключен. Если розетка уже открыта, она будет закрыта.

begin

Итератор, указывающий на начало последовательности конечных точек.

handler

Обработчик должен быть вызван, когда операция подключения завершится. Копии будут сделаны из обработчика по мере необходимости. Функциональная подпись обработчика должна быть:

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, an iterator denoting the successfully
  // connected endpoint. Otherwise, the end iterator.
  Iterator iterator
);

Независимо от того, выполняется ли асинхронная операция немедленно или нет, обработчик не будет вызываться из этой функции. Запрос обработчика будет выполнен способом, эквивалентным использованию<boost::asio::io_service::post()>.

Remarks

Эта перегрузка предполагает, что построенный по умолчанию объект типа<Iterator>представляет собой конец последовательности. Это верное предположение для типов итераторов, таких как<boost::asio::ip::tcp::resolver::iterator>.

Example
tcp::resolver r(io_service);
tcp::resolver::query q("host", "service");
tcp::socket s(io_service);
// ...
r.async_resolve(q, resolve_handler);
// ...
void resolve_handler(
    const boost::system::error_code& ec,
    tcp::resolver::iterator i)
{
  if (!ec)
  {
    boost::asio::async_connect(s, i, connect_handler);
  }
}
// ...
void connect_handler(
    const boost::system::error_code& ec,
    tcp::resolver::iterator i)
{
  // ...
}

PrevUpHomeNext

Статья async_connect (1 of 4 overloads) раздела Boost.Asio async_connect может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: async_connect ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 07:08:27/0.0058169364929199/0