std :: runtime_error: resol: Хост не найден (авторитетно) в boost :: asio

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

using boost::asio::ip::tcp;

std::string ipAddress;

boost::asio::io_service io_service;
tcp::resolver resolver(io_service);
tcp::resolver::query query(boost::asio::ip::host_name(), "");

tcp::resolver::iterator iter = resolver.resolve(query);

приводит к следующей ошибке при запуске на OS X High Sierra с использованием Xcode 9.1:

std::runtime_error: resolve: Host not found (authoritative)

Значение resolver является:

(boost::asio::ip::tcp::resolver) resolver = {
boost::asio::basic_io_object<boost::asio::ip::resolver_service<boost::asio::ip::tcp>, false> = {
service = 0x00000001023159a0
implementation = nullptr {
__ptr_ = 0x0000000000000000
__cntrl_ = 0x00000001023156c0
}
}
}

и значение query является:

(boost::asio::ip::basic_resolver<boost::asio::ip::tcp, boost::asio::ip::resolver_service<boost::asio::ip::tcp> >::query) query = {
hints_ = {
ai_flags = 1024
ai_family = 0
ai_socktype = 1
ai_protocol = 6
ai_addrlen = 0
ai_canonname = 0x0000000000000000
ai_addr = 0x0000000000000000
ai_next = 0x0000000000000000
}
host_name_ = "iMac.local"service_name_ = ""}

resolve функция выглядит так:

iterator resolve(const query& q)
{
boost::system::error_code ec;
iterator i = this->service.resolve(this->implementation, q, ec);
boost::asio::detail::throw_error(ec, "resolve");
return i;
}

так что я вижу, что зовет resolve с resolver.implementation быть nullptr это то, что вызывает проблему. Тем не менее, я не знаю, почему это nullptr,

Это не проблема на разных машинах под управлением OS X Yosemite или El Capitan.

0

Решение

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

Наконец-то понял это, отчасти благодаря Какой-то программист чувак запрос на пинг хоста, а затем поиск, основанный на том факте, что пинг не удался.

Эта почта https://discussions.apple.com/thread/7707202?start=0&TSTART = 0 утверждает, что по какой-то причине .local hostname остается выключенным, если ни одна из служб общего доступа не активна.

Включение их решило проблему.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]