gpt4 book ai didi

c++ - std::runtime_error: resolve: 在 boost::asio 中找不到主机(权威)

转载 作者:行者123 更新时间:2023-11-28 04:55:07 28 4
gpt4 key购买 nike

以下代码:

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);

使用 Xcode 9.1 在 OS X High Sierra 上运行时导致以下错误:

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;
}

所以我可以看到调用 resolveresolver.implementationnullptr 是导致问题的原因。但是,我不知道为什么它是一个nullptr

这在运行 OS X Yosemite 或 El Capitan 的不同机器上不是问题。

最佳答案

发布答案以防其他人遇到同样的问题并最终出现在这里。

终于弄明白了,部分要感谢一些程序员询问有关 ping 主机然后根据 ping 失败的事实进行搜索。

此帖https://discussions.apple.com/thread/7707202?start=0&tstart=0指出出于某种原因,除非任何共享服务处于事件状态,否则 .local 主机名将保持关闭状态。

打开它们解决了问题。

关于c++ - std::runtime_error: resolve: 在 boost::asio 中找不到主机(权威),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47325889/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com