在 QNetworkAccessManager 中,何时从解析 DNS 的 IP 列表中选择 IP?

In QNetworkAccessManager, When IP is selected from list of IPs resolved DNS?

我正在使用 QnetworkAccessManager 发出 HTTP 请求,我想知道何时解析 FQDN(DNS 解析)以获取 IP 地址或 IP 地址列表。

QNetworkAccessManager 如何从已解析的 IP 列表中选择 IP 来发送请求?

QNetworkAccessManager是否保留DNS解析的缓存?

QNetworkAccessManager 使用 QAbstractSocket 包括其解析主机名的能力。 QAbstractSocket 使用 QHostInfo::lookupHost 获取指定主机的 IP 列表 (QHostInfo::​addresses)。 QAbstractSocket 尝试连接每个 QHostInfo::​addresses 直到连接成功。

无法知道使用了哪个地址,因为 QNetworkAccessManager 不会向用户公开使用过的套接字。您可以使用 QHostInfo public API.

获取完整的地址列表

QHostInfo 具有内部全局缓存,最多可存储 128 个项目,最长时限为 1 分钟。