gpt4 book ai didi

c++ - boost::asio 在没有 WLAN 的情况下无法连接到本地主机

转载 作者:可可西里 更新时间:2023-11-01 18:32:25 26 4
gpt4 key购买 nike

在我的电脑(Surface Pro 2)上,只有一个网络适配器,它是一个无线 LAN 适配器。

我在一个小型 C++ 项目上工作,它使用 boost::asio 连接到本地主机并执行它的工作,一切都很好。

但是今天我发现,如果我断开WLAN与互联网的连接,这个程序不工作。

boost::asio 的解析器将抛出异常:

tcp::resolver::query query("localhost", "10127");
tcp::resolver resolver(io_service_);
tcp::resolver::iterator iterator;

try {
iterator = resolver.resolve(query);
}
catch (boost::system::system_error& e) {
log(e.what());
}

错误信息是:请求的名称有效但没有数据找到了请求的类型。

Ping 本地主机正常。

我很疑惑,本地网络程序需要Internet吗?本地网络程序是否需要 LAN 适配器?为什么 ping 工作正常?

最佳答案

我只是在 linux 机器上遇到了同样的问题,并查阅了 boost asio 文档。您只需要向 query 构造函数添加一个标志参数:
tcp::resolver::query query("localhost","10127",tcp::resolver::query::canonical_name);

注意:query 的完整作用域名称是 boost::asio::ip::tcp::resolver::query

发生这种情况是因为这里传递的默认标志参数是 boost::asio::ip::tcp::resolver::query::address_configured,这意味着调用应该只解析 IPv4/如果为系统配置了非环回 IPv4/IPv6 地址,则为 IPv6 地址。

关于c++ - boost::asio 在没有 WLAN 的情况下无法连接到本地主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22322506/

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