DnsOptions

class DnsOptions


用于配置 Cronet 的主机解析功能的类。请注意,虽然我们为了简洁起见,将 DNS 称为最常用的机制,但设置适用于其他解析主机名的方式,例如主机文件解析。

Cronet 通过两种方式解析主机名:使用系统解析器(使用系统库提供的 getaddrinfo),或使用 Cronet 使用的网络堆栈中内置的自定义解析器。

与使用系统解析器相比,内置堆栈具有以下几个优势:

  • 它已根据网络堆栈的需求进行了定制,尤其是在速度和稳定性方面。
  • getaddrinfo 是一个阻塞调用,需要专用工作器线程,并且无法取消(我们需要放弃该线程,直到调用完成)
  • getaddrinfo 接口无法深入了解失败的根本原因
  • struct addrinfo 不提供返回地址的 TTL(存留时间)。这限制了处理缓存的灵活性(例如,允许使用过时的 DNS 记录),并且要求我们依赖操作系统 DNS 缓存,或者对 TTL 非常保守。
  • 作为操作系统的一部分,getaddrinfo 的发展速度较慢。使用自定义堆栈使 Cronet 能够更快地引入加密 DNS 等功能。

此类中的大多数配置仅在内置 DNS 解析器使用时适用。

摘要

嵌套类型

DnsOptions 的构建器。

用于尚未被视为稳定的 API 的注解。

用于配置 Cronet 的过时 DNS 功能的类。

StaleDnsOptions 的构建器。

公共函数

builder

java-static fun builder(): DnsOptions.Builder!

getEnableStaleDns

fun getEnableStaleDns(): Boolean?

getPersistHostCache

fun getPersistHostCache(): Boolean?

getPersistHostCachePeriodMillis

fun getPersistHostCachePeriodMillis(): Long?

getPreestablishConnectionsToStaleDnsResults

fun getPreestablishConnectionsToStaleDnsResults(): Boolean?

getStaleDnsOptions

fun getStaleDnsOptions(): DnsOptions.StaleDnsOptions?

getUseBuiltInDnsResolver

fun getUseBuiltInDnsResolver(): Boolean?