【问题标题】:In QNetworkAccessManager, When IP is selected from list of IPs resolved DNS?在 QNetworkAccessManager 中,何时从解析 DNS 的 IP 列表中选择 IP?
【发布时间】:2015-04-27 09:41:26
【问题描述】:

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

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

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

【问题讨论】:

    标签: qt http qtwebkit qnetworkaccessmanager qnetworkrequest


    【解决方案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。
    猜你喜欢
    • 2016-03-03
    • 1970-01-01
    • 2012-09-27
    • 2018-10-14
    • 2022-01-13
    • 2020-03-24
    • 1970-01-01
    • 2019-04-13
    • 1970-01-01
    相关资源
    最近更新 更多