DnsOptions

class DnsOptions


Eine Klasse, die die Hostauflösungsfunktion von Cronet konfiguriert. Der Einfachheit halber wird hier DNS als der am häufigsten verwendete Mechanismus bezeichnet. Die Einstellungen gelten jedoch auch für andere Methoden zur Auflösung von Hostnamen, z. B. die Auflösung von Hostdateien.

Cronet löst Hostnamen auf zwei Arten auf: entweder mit dem Systemresolver ( getaddrinfo aus Systembibliotheken) oder mit einem benutzerdefinierten Resolver, der in den Netzwerk-Stack von Cronet integriert ist.

Der integrierte Stack bietet mehrere Vorteile gegenüber dem Systemresolver:

  • Er wurde auf die Anforderungen des Netzwerk-Stacks zugeschnitten, insbesondere auf Geschwindigkeit und Stabilität.
  • getaddrinfo ist ein blockierender Aufruf, für den Worker-Threads erforderlich sind und der nicht abgebrochen werden kann. Der Thread muss beendet werden, bis der Aufruf abgeschlossen ist.
  • Die getaddrinfo-Schnittstelle bietet keine Informationen zur Ursache von Fehlern.
  • struct addrinfo enthält keine TTL (Time To Live) der zurückgegebenen Adressen. Dadurch wird die Flexibilität bei der Verarbeitung von Caching eingeschränkt (z. B. die Verwendung veralteter DNS-Einträge). Wir müssen uns entweder auf DNS-Caches des Betriebssystems verlassen oder die TTL sehr konservativ festlegen.
  • getaddrinfo ist Teil des Betriebssystems und wird daher nur langsam weiterentwickelt. Mit einem benutzerdefinierten Stack kann Cronet Funktionen wie verschlüsseltes DNS schneller einführen.

Die meisten Konfigurationen in dieser Klasse gelten nur, wenn der integrierte DNS-Resolver verwendet wird.

Zusammenfassung

Verschachtelte Typen

Builder für DnsOptions.

Eine Annotation für APIs, die noch nicht als stabil gelten.

Eine Klasse, die die Funktion für veraltetes DNS von Cronet konfiguriert.

Builder für StaleDnsOptions.

Öffentliche Funktionen

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?