DnsOptions

public final class DnsOptions


Eine Klasse, mit der die Hostauflösungsfunktion von Cronet konfiguriert wird. Der Einfachheit halber wird hier nur auf DNS als gängigsten Mechanismus verwiesen. Die Einstellungen gelten aber 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 über den System-Resolver ( getaddrinfo aus Systembibliotheken) oder über einen benutzerdefinierten Resolver, der in den Netzwerk-Stack von Cronet integriert ist.

Der integrierte Stack bietet gegenüber dem System-Resolver mehrere Vorteile:

  • 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 reserviert werden müssen 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.
  • Als Teil des Betriebssystems wird getaddrinfo 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

public final class DnsOptions.Builder

Builder für DnsOptions.

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

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

Builder für StaleDnsOptions.

Öffentliche Methoden

Builder

public static DnsOptions.Builder builder()

getEnableStaleDns

public @Nullable Boolean getEnableStaleDns()

getPersistHostCache

public @Nullable Boolean getPersistHostCache()

getPersistHostCachePeriodMillis

public @Nullable Long getPersistHostCachePeriodMillis()

getPreestablishConnectionsToStaleDnsResults

public @Nullable Boolean getPreestablishConnectionsToStaleDnsResults()

getStaleDnsOptions

public @Nullable DnsOptions.StaleDnsOptions getStaleDnsOptions()

getUseBuiltInDnsResolver

public @Nullable Boolean getUseBuiltInDnsResolver()