Вы передаете построенную конечную точку по умолчанию для connect
, что просто недопустимо. Если у вас есть список конечных точек, заданных [iter,end)
итераторами, вы должны проверить каждую из них, передавая его connect
:
boost::asio::ip::tcp::socket socket(io_service);
while (iter != end)
{
boost::asio::ip::tcp::endpoint endpoint = *iter++;
std::cout << endpoint << std::endl;
boost::system::erroc_code err;
socket.connect(endpoint,err);
if ( !err ) // there is no error
{
// connection is established, we can break loop
break;
}
else {
std::cout << "ups, we have problem" << std::endl;
}
}
В более простой версии можно использовать бесплатную connect функция, которая принимает оба итератора:
boost::asio::ip::tcp::socket socket(io_service);
boost::system::error_code err;
boost::asio::connect(socket,iter,end,err);
if (!err)
std::cout << "connected" << std::endl;