默认情况下,libcurl 优先考虑哪个 IP 版本

问题描述

我使用的是 libcurl 的认解析选项

curl_easy_setopt(curl,CURLOPT_IPRESOLVE,CURL_IPRESOLVE_WHATEVER);

当 libcurl 解析主机地址并同时获得 IPv4 地址和 IPv6 地址时,libcurl 将首先使用 IPv4 还是 IPv6? libcurl 使用什么算法来选择首先使用的 ip 地址?

有没有办法强制 libcurl 首先使用所有 ipv6 地址,如果失败则转到 ipv4 地址?

解决方法

未指定顺序。我想,使用了 DNS 响应的顺序。

这更聪明一点。如果可以重用与该主机的活动连接,则不会执行与已解析多个 IP 的主机的连接。

有没有办法强制 libcurl 首先使用所有 ipv6 地址,如果失败则转到 ipv4 地址?

CURLOPT_IPRESOLVE 使用相应的选项。第一次失败后使用下一个。特定选项会尝试同一系列的所有可用 IP 地址。