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