2
开始我的程序时,我需要检索运行它的机器的本地(LAN)地址。我这样做的方式如下:Boost Asio udp解析器返回错误的端点迭代器
try {
asio::io_service ioService;
asio::udp::resolver resolver(ioService);
asio::udp::query lanQuery(asio::udp::v4(), asio::ip::host_name(), "");
boost::system::error_code error;
auto endpointIter = resolver.resolve(lanQuery, error);
if (error || endpointIter == endpoint_iterator()) {
//TREATS ERROR
return;
}
//BUILD ENDPOINT
asio::udp::endpoint endpoint(*endpointIter); //CRASHES HERE FOR SOME PPL
catch (...) {//TREATS ERROR}
这项工作为90%的用户,但为少数人在最后一行崩溃。 Idk做什么,因为我测试返回的迭代器,错误代码,并且我用try ... catch(...)块封装了整个代码。
我甚至不能对待异常,程序只是崩溃,就是这样。 我使用Boost 1.64,但这个问题自始至终都会发生。
我没有注意到这种崩溃的任何模式,它似乎崩溃随机人与各种硬件/软件/操作系统。
我做错了什么?有没有人看到这个代码崩溃的原因?
也许这不是真正的答案,但征求意见我没有足够的声誉 – Dobby
哦,是啊,它实际上是一个迭代器,我抄错了的问题,现在会纠正。 –