public final class DnsOptions extends Object
一个配置 Cronet 主机解析功能的类。请注意,尽管为了简洁起见,我们将 DNS
作为最常用的机制,但这些设置也适用于解析主机名的其他方式,例如 hosts 文件解析。
Cronet 以两种方式解析主机名:要么使用系统解析器(使用系统库提供的 getaddrinfo
),要么使用内置在 Cronet 使用的网络堆栈中的自定义解析器。
内置堆栈相比使用系统解析器具有多个优势
- 它专为网络堆栈的需求而定制,尤其注重速度和稳定性。
getaddrinfo
是一个阻塞调用,需要专门的工作线程,并且无法取消(我们需要放弃该线程直到调用完成)getaddrinfo
接口无法深入了解失败的根本原因struct addrinfo
不提供返回地址的 TTL(生存时间)。这限制了处理缓存的灵活性(例如允许使用过时的 DNS 记录),并且要求我们要么依赖操作系统的 DNS 缓存,要么对 TTL 极其保守。- 作为操作系统的一部分,
getaddrinfo
演进缓慢。使用自定义堆栈使 Cronet 能够更快地引入加密 DNS 等功能。
此类中的大多数配置仅在使用内置 DNS 解析器时适用。
嵌套类摘要
类 | DnsOptions.Builder | 用于构建 DnsOptions 的构建器。 |
|
@interface | DnsOptions.Experimental | 一个注解,用于标记尚未被视为稳定的 API。 | |
类 | DnsOptions.StaleDnsOptions | 一个配置 Cronet 过期 DNS 功能的类。 |
公共方法摘要
static DnsOptions.Builder |
builder()
|
Boolean | |
Boolean | |
Long | |
Boolean | |
DnsOptions.StaleDnsOptions | |
Boolean |