Boost::ASIO разрешает несколько адресовC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Boost::ASIO разрешает несколько адресов

Сообщение Anonymous »

У меня возникли проблемы с разрешением нескольких адресов с помощью Boost::ASIO. Я могу один раз вызвать async_resolve, получить конечную точку и без проблем подключиться к ней. Но если я захочу снова вызвать async_resolve позже, async_resolve зависнет навсегда и никогда не вызовет мой обработчик событий.
Есть ли способ завершить или закрыть предыдущий async_resolve? Или это что-то другое?
hostResolver = new boost::asio::ip::tcp::resolver(*internalEventPump->getIoService());

hostResolver->async_resolve(boost::asio::ip::tcp::v4(), hostName, portString,
boost::bind(&DTcpSocket::resolveFinished, this, boost::asio::placeholders::error, boost::asio::placeholders::iterator));

...
void DTcpSocket::resolveFinished(const boost::system::error_code &errorCode,
boost::asio::ip::tcp::resolver::iterator iterator)
{
endPointIter = iterator;

if (errorCode)
{
errMsg = "Couldn't resolve hostname: " + errorCode.message();
connectionHandler(errMsg, DA_HOSTNAME_ERROR);
}
else
{
boost::asio::ip::tcp::endpoint endpoint = *endPointIter;
cout

Подробнее здесь: https://stackoverflow.com/questions/793 ... -addresses
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»