Boost Asio udp 解析器返回错误的端点迭代器
Boost Asio udp resolver returning faulty endpoint iterator
启动程序时,我需要检索运行它的机器的本地(LAN)地址。我这样做的方式如下:
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 该怎么办,因为我测试了返回的迭代器、错误代码,并且还尝试了整个代码......捕获 (...) 块。
我什至无法处理异常,程序只是崩溃,仅此而已。我正在使用 Boost 1.64,但这个问题永远发生。
我没有注意到这种崩溃的任何模式,对于拥有各种硬件/软件/操作系统的随机人来说,它似乎崩溃了。
我做错了什么吗?有没有人看到这段代码会崩溃的原因?
将 endpointIter 与默认构造的端点进行比较是否正确?在我的源代码中,我与默认构造的迭代器进行比较:
auto endpointIter = resolver.resolve(lanQuery, error);
decltype(endpointIter) end;
for(;endpointIter != end; ++endpointIter)
{
asio::udp::endpoint endpoint(*endpointIter);
...
}
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- MSVC多行宏编译器错误
- Boost Asio udp 解析器返回错误的端点迭代器
- GNU 无线电值错误:无法强制端点
- 处理提升端点侦听/运行错误