Что такое boost:: asio:: ip:: tcp:: resolver:: iterator do?

Я начинаю с программирования boost asio на С++ и при просмотре примеров я просто не понимаю, что делает boost::asio::ip::tcp::resolver::iterator.

Код:

boost::asio::io_service io_service;

tcp::resolver resolver(io_service);
tcp::resolver::query query(argv[1]);
tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);
tcp::resolver::iterator end;

tcp::socket socket(io_service);
boost::system::error_code error = boost::asio::error::host_not_found;
while (error && endpoint_iterator != end)
{
  socket.close();
  socket.connect(*endpoint_iterator++, error);
}

Пожалуйста, помогите мне и извините меня, если мой вопрос не предоставит достаточной информации.

Ответ 1

boost::asio::ip::tcp::resolver::iterator выполняет итерацию по списку адресов указанного вами хоста (хосты могут иметь несколько адресов).

Как итератор std::string:: iterates через его символы, boost:: asio:: ip:: tcp:: resolver:: iterator выполняет итерацию через свой список адресов.

Следующий код:

while (error && endpoint_iterator != end)
{
  socket.close();
  socket.connect(*endpoint_iterator++, error);
}

пытается установить соединение с каждой конечной точкой до тех пор, пока оно не завершится или не закончится конечными точками (спасибо за исправление Eugen Constantin Dinca).