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

connect (6 of 8 overloads)

Boost , Boost.Asio , 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 ConnectCondition>
Iterator connect(
    basic_socket< Protocol, SocketService > & s,
    Iterator begin,
    ConnectCondition connect_condition,
    boost::system::error_code & ec);

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

Parameters

s

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

begin

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

connect_condition

Объект функции, который называется перед каждой попыткой соединения. Подпись объекта функции должна быть:

Iterator connect_condition(
    const boost::system::error_code& ec,
    Iterator next);

Параметр ec содержит результат самой последней операции соединения. Перед первой попыткой соединения ec всегда указывает на успех. Параметр next представляет собой итератор, указывающий на следующую конечную точку, которую нужно опробовать. Объект функции должен вернуть следующий итератор, но ему разрешено вернуть другой итератор, чтобы конечные точки могли быть пропущены. Реализация гарантирует, что объект функции никогда не будет называться конечным итератором.

ec

Установить, какая ошибка произошла, если таковая имеется. Если последовательность пуста, установите на boost::asio::error::not_found. В противном случае, содержит ошибку от последней попытки соединения.

Return Value

В случае успеха итератор обозначает успешно подключенную конечную точку. В противном случае - конечный итератор.

Remarks

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

Example

Для вывода информации об отдельных попытках соединения может использоваться следующий объект функции состояния соединения:

struct my_connect_condition
{
  template <typename Iterator>
  Iterator operator()(
      const boost::system::error_code& ec,
      Iterator next)
  {
    if (ec) std::cout << "Error: " << ec.message() << std::endl;
    std::cout << "Trying: " << next->endpoint() << std::endl;
    return next;
  }
};

Он будет использоваться с функцией boost::asio::connect следующим образом:

tcp::resolver r(io_service);
tcp::resolver::query q("host", "service");
tcp::socket s(io_service);
boost::system::error_code ec;
tcp::resolver::iterator i = boost::asio::connect(
    s, r.resolve(q), my_connect_condition(), ec);
if (ec)
{
  // An error occurred.
}
else
{
  std::cout << "Connected to: " << i->endpoint() << std::endl;
}

PrevUpHomeNext

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




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



:: Главная :: connect ::


реклама


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

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