我使用QnetworkAccessManager发出HTTP请求,我想知道何时解析FQDN(DNS解析)以获取IP地址或IP地址列表。
QNetworkAccessManager如何从已解析的IP列表中选择IP来发送请求?
QNetworkAccessManager是否保留DNS解析缓存?
答案 0 :(得分:1)
QNetworkAccessManager
使用QAbstractSocket
,包括解析主机名的能力。 QAbstractSocket
使用QHostInfo::lookupHost
获取指定主机的IP列表(QHostInfo::addresses
)。 QAbstractSocket
尝试连接到QHostInfo::addresses
中的每一个,直到连接成功。
无法知道使用了哪个地址,因为QNetworkAccessManager
未向用户公开使用过的套接字。您可以使用QHostInfo
公共API获取完整的地址列表。
QHostInfo
具有内部全局缓存,最多可存储128个项目,最长时间为1分钟。