Boost Asio udp resolver返回错误的端点迭代器

时间:2017-10-20 17:28:06

标签: c++ boost-asio

启动程序后,我需要检索运行它的机器的本地(LAN)地址。我这样做的方法如下:

# $file[0] is path to file in bucket.
$firstFilePath = $file[0];

Storage::put(
    storage_path($firstFilePath),
    Storage::get($firstFilePath)
);

$getid3->analyze(storage_path($firstFilePath));

这项工作适用于90%的用户,但对于少数人来说,它最后一行崩溃了。 Idk该做什么,因为我测试了返回的迭代器,错误代码,并且我用try ... catch(...)块包含了整个代码。

我甚至无法处理异常,程序只是崩溃而且就是这样。 我正在使用Boost 1.64,但这个问题永远都会发生。

我没有注意到这种崩溃的任何模式,对于随机的各种硬件/软件/操作系统来说,它似乎都会崩溃。

我做错了吗?有没有人看到这个代码崩溃的原因?

1 个答案:

答案 0 :(得分:0)

将endpointIter与默认构造端点进行比较是否正确? 在我的源代码中,我与默认构造的迭代器进行比较:

auto endpointIter = resolver.resolve(lanQuery, error);
decltype(endpointIter) end;

for(;endpointIter != end; ++endpointIter)
{
  asio::udp::endpoint endpoint(*endpointIter);
  ...
}