当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地址