Für die Ausführung einer App ist häufig ein bestimmter Netzwerkstatus oder -kontext erforderlich, beispielsweise die Verbindung zu einer bestimmten IP-Adresse, die Gewährleistung einer ordnungsgemäßen Konfiguration oder des Online-Status des Geräts. Das AppFramework ist zwar nicht in der Lage, all dies auf Systemebene zu steuern, stellt jedoch Komponenten für den Zugriff auf die entsprechenden Informationen bereit, sodass es die Vorgänge in der App angeben kann.
Vom System bereitgestellte Konfigurationen
Netzwerkkonfigurationen werden vom Gerät verarbeitet und gespeichert. In der Regel ist die App nicht dafür zuständig. In Situationen, in denen eine App den Netzwerkverbindungsstatus des Geräts kennen muss, stellt die Netzwerkkomponente schreibgeschützten Zugriff auf die dem System bekannten Netzwerkkonfigurationen bereit und ermöglicht es den Apps so, diese Systemverbindungen und -funktionen zu ermitteln.
Bei vielen Apps beschränken sich die Anforderungen an das Netzwerk auf den Online-Status und die Herstellung der Verbindung zu Diensten. Dies kann ganz einfach mit der Eigenschaft isOnline überprüft werden, einem booleschen Wert, der angibt, ob das Gerät aktuell online ist. Mit dieser Eigenschaft kann das App-Verhalten geändert werden: Entweder werden alternative Funktionen ausgeführt, die keinen Netzwerkzugriff benötigen, oder es wird eine Fehlermeldung angezeigt, wenn das Gerät online sein muss.
Column {
anchors {
left: parent.left
right: parent.right
bottom: parent.bottom
margins: 20 * AppFramework.displayScaleFactor
}
spacing: 5
Item {
height: 20
width: parent.width
}
Button {
anchors.horizontalCenter: parent.horizontalCenter
text: "Sign In"
onClicked: {
if (AppFramework.network.isOnline) {
messageDialogOnline.open();
} else {
messageDialogOffline.open();
}
}
MessageDialog {
id: messageDialogOnline
title: "Network Connection"
text: "This device is currently online."
}
MessageDialog {
id: messageDialogOffline
title: "Network Error"
text: "Please connect to a network to get started."
}
}
}
Netzwerkadressen
Die NetworkAddress-Komponente speichert eine einzelne Netzwerk-IP-Adresse. Sie wird zum einen zusammen mit anderen Komponenten zur Durchführung von Aktionen verwendet, beispielsweise zum Herstellen von Hostverbindungen und Einrichten eines Servers. Zum anderen stellt sie auch Eigenschaften bereit, anhand derer ermittelt wird, ob die Adresse einen bestimmten Zweck hat, beispielsweise Loopback oder Multicast.
Ein Loopback ist ein spezifischer Bereich von IP-Adressen, der ausgehende Signale an denselben Computer senden soll (in der Regel für Testzwecke). Für IPv4-Geräte liegt der Bereich der Loopback-Adressen zwischen 127.0.0.0 und 127.255.255.255. Die am häufigsten verwendete Adresse ist 127.0.0.1. In der Regel wird der Name "localhost" verwendet. Für IPv6 wird die für Loopbacks reservierte Adresse in der Regel als ::1 vereinfacht, da die vollständige Adresse sehr lang ist. Die boolesche NetworkAddress-Eigenschaft isLoopback gibt "true" zurück, wenn die vom Objekt gespeicherte Adresse eine Loopback-Adresse ist.
Bei Multicast-Adressen handelt es sich um einen großen Adressbereich, der für die Multicast-Kommunikation reserviert ist. Hierbei werden die Informationen an eine Gruppe von Zielcomputern gesendet. In mit AppFramework erstellten Apps wird Multicast meistens für UDP (User Datagram Protocol) verwendet, ein Übertragungsprotokoll, dessen Priorität mehr auf Geschwindigkeit als auf Zuverlässigkeit liegt. Es gibt jedoch zahlreiche weitere Verwendungszwecke. Der Multicast-Adressbereich für IPv4-Geräte liegt zwischen 224.0.0.0 und 239.255.255.255. IPv6-Multicast-Adressen verwenden hingegen das Präfix ff00::/8. Bei beiden Protokollen sind jedoch Bereichsabschnitte für spezifischere Multicast-Verwendungszwecke reserviert. Die boolesche NetworkAddress-Eigenschaft isMulticast gibt "true" zurück, wenn die vom Objekt gespeicherte Adresse eine Multicast-Adresse ist.
NetworkAddress enthält ebenfalls die Eigenschaft isNull, um Null-Adressen zu ermitteln, die für keinen Host bzw. keine Schnittstelle gültig sind, und die Methode isInSubnet, um festzustellen, ob die gespeicherte IP-Adresse sich in einem angegebenen Subnet befindet. Mit diesen Funktionen wird sichergestellt, dass nur IP-Adressen übergeben werden, die den Anforderungen einer App entsprechen.