DnsOptions

class DnsOptions


這個類別會設定 Cronet 的主機解析度功能。請注意,為簡潔起見,我們將 DNS 稱為最常用的機制,但設定適用於其他主機名稱解析方式,例如主機檔案解析。

Cronet 會透過兩種方式解析主機名稱:使用系統解析器 (使用系統程式庫提供的 getaddrinfo),或使用內建於 Cronet 所用網路堆疊的自訂解析器。

相較於使用系統解析器,內建堆疊具有下列幾項優點:

  • 這項功能專為網路堆疊需求量身打造,特別是速度和穩定性。
  • getaddrinfo 是封鎖呼叫,需要專用工作執行緒,且無法取消 (我們需要放棄執行緒,直到呼叫完成為止)
  • getaddrinfo 介面無法深入瞭解失敗的根本原因
  • struct addrinfo 不會提供傳回位址的 TTL (存留時間)。這會限制處理快取的彈性 (例如允許使用過時的 DNS 記錄),並要求我們依賴 OS DNS 快取,或極度保守地使用 TTL。
  • getaddrinfo是 OS 的一部分,因此演進速度較慢。使用自訂堆疊可讓 Cronet 更快推出加密 DNS 等功能。

這個類別中的大部分設定僅適用於使用內建 DNS 解析器時。

摘要

巢狀型別

DnsOptions 的建構工具。

API 的註解,表示 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?