提升ASIO-获得排序的端点(首先是IPv4,然后是IPv6)
Boost ASIO - obtaining sorted endpoints (first IPv4 then IPv6)
当boost asio(1.42)获得端点时,它可能同时包含IPv4和IPv6。
是否可以对端点进行排序(先是v4,然后是v6)?
boost::asio::ip::tcp::resolver resolver(io_service);
boost::asio::ip::tcp::resolver::query query(host, boost::lexical_cast<std::string>(port));
boost::asio::ip::tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);
boost::asio::ip::tcp::resolver::iterator end;
/* I WANT FIRST ENDPOINTS TO BE IPv4, THEN IPv6 */
while (error && endpoint_iterator != end) {
socket.close();
socket.connect(*endpoint_iterator++, error);
}
如果你能检查类型和性能——这不是你的首要任务,或者没有太多端点,你只需要做两次whiles,其中一次只做V4,另一次为v6。类似的东西
while (error && endpoint_iterator != end) {
if(isv4(*endpoint_iterato)){
socket.close();
socket.connect(*endpoint_iterator++, error);
}
}
while (error && endpoint_iterator != end) {
if(isv6(*endpoint_iterato)){
socket.close();
socket.connect(*endpoint_iterator++, error);
}
}
检查这个问题过滤器太
使用boost asio 枚举我的卡的ipv4和ipv6地址
相关文章:
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- 这是我尝试让用户将值输入到数组中.然后将其隐藏为大量的星号
- boost::asio如何生成多个协同程序,然后加入它们
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- 在std::thread中,joinable()然后join()线程安全吗
- C++:如何读取分离变量,然后读取向量
- 为什么我的递归函数按降序打印,然后按升序打印?
- 等待整个 omp 块完成,然后再调用第二个函数
- CMake:如何将库 A 链接到库 B,然后将可执行文件链接到库 A
- 如何存储用户输入的所有数据,然后在他们想要查看所有数据时显示它们
- '{'标记之前的预期类名,然后在预声明时无效使用不完整的类型'class class_name'
- 如何使变量从 x 到 y,然后从 y 返回到 x 并始终重复该过程
- 我有一个数组,我想输入一个范围,然后找到范围内所有偶数的总和?
- 如何正确地推回然后遍历堆中对象的向量?
- 我似乎无法为指针分配一个数组,然后更改数组的内容
- 如何在字符串中找到字符,然后在C++中提取其余的字符串
- 首先按给定顺序打印所有数字,然后使用 Array 打印所有字符和其他符号
- 将加密消息从 php 发送到 C++ 应用程序,然后使用 CryptoPP 进行解密
- 提升ASIO-获得排序的端点(首先是IPv4,然后是IPv6)