在 QNetworkAccessManager 中,何时从解析 DNS 的 IP 列表中选择 IP?
Posted
技术标签:
【中文标题】在 QNetworkAccessManager 中,何时从解析 DNS 的 IP 列表中选择 IP?【英文标题】:In QNetworkAccessManager, When IP is selected from list of IPs resolved DNS? 【发布时间】:2015-04-27 09:41:26 【问题描述】:我正在使用 QnetworkAccessManager 发出 HTTP 请求,我想知道 FQDN 何时被解析(DNS 解析)以获取 IP 地址或 IP 地址列表。
QNetworkAccessManager如何从解析的IP列表中选择IP发送请求?
QNetworkAccessManager 是否保留 DNS 解析的缓存?
【问题讨论】:
【参考方案1】:QNetworkAccessManager
使用QAbstractSocket
,包括它解析主机名的能力。 QAbstractSocket
使用QHostInfo::lookupHost
获取指定主机的IP 列表(QHostInfo::addresses
)。 QAbstractSocket
尝试连接到每个 QHostInfo::addresses
,直到连接成功。
无法知道使用了哪个地址,因为QNetworkAccessManager
不会向用户公开使用过的套接字。您可以使用QHostInfo
public API 获取完整的地址列表。
QHostInfo
具有内部全局缓存,最多可存储 128 个项目,最长期限为 1 分钟。
【讨论】:
感谢您提供信息。如果 ant URL 被触发,它是否只使用 TCP 或 UDP 协议?因为我想使用 QtWebkit 触发 URL 并检查哪个 IP 地址请求。 HTTP(S) 和 FTP 仅使用 TCP。以上是关于在 QNetworkAccessManager 中,何时从解析 DNS 的 IP 列表中选择 IP?的主要内容,如果未能解决你的问题,请参考以下文章
在 QNetworkAccessManager 中,何时从解析 DNS 的 IP 列表中选择 IP?
在 Qt 中使用 QNetworkAccessManager 的持久连接
QNetworkAccessManager 读取传出数据并将其保存在 QIODevice
在 QtWebkit 中,如何调用网页的 QNetworkAccessManager::createRequest()?