Informacje o sieci

Aplikacja często wymaga do działania konkretnego kontekstu lub statusu sieci (czy jest połączona z konkretnym adresem IP, czy używana jest wyłącznie poprawna konfiguracja lub czy w ogóle urządzenie jest w trybie online). Ponieważ moduł AppFramework nie jest w stanie kontrolować niektórych z tych informacji na poziomie systemowym, zawiera on komponenty udostępniające informacje o działaniu aplikacji.

Konfiguracje dostarczane przez system

Konfiguracje sieciowe są obsługiwane i przechowywane przez urządzenie i zwykle nie potrzebują obsługi ze strony aplikacji. Jednak w sytuacjach, w których aplikacja musi znać status połączenia sieciowego urządzenia, komponent Network zapewnia dostęp tylko do odczytu do konfiguracji sieci znanych systemowi, pozwalając aplikacji na wykrycie tych możliwości i połączeń systemowych.

Dla wielu aplikacji wymagania w stosunku do sieci ograniczają się do możliwości pozostawania w trybie online i nawiązywania połączenia z usługami. W tym przypadku wystarczy sprawdzić wartość logiczną właściwości isOnline informującą o tym, czy urządzenie pracuje aktualnie w trybie online. Ta właściwość może być używana do zmiany zachowania aplikacji tak, aby wykonywała ona alternatywne funkcje, które nie wymagają dostępu do sieci lub na wyświetleniu komunikatu o błędzie, jeśli tryb online jest wymagany.

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."
    }
    }
}

Adresy sieciowe

Komponent NetworkAddress przechowuje jeden sieciowy adres IP. Komponent ten jest używany razem z innymi komponentami do wykonywania działań, takich jak nawiązywanie połączenia z hostem i konfigurowanie serwera. Oprócz tego udostępnia on również właściwości określające, czy adres ma specjalne przeznaczenie, takie jak pętla zwrotna lub multiemisja.

Pętla zwrotna jest jednym ze specjalnych zakresów adresów IP, który jest przeznaczony do wysyłania sygnałów wychodzących do tego samego komputera, zwykle w celach testowych. W przypadku urządzeń IPv4 adresy z zakresu od 127.0.0.0 do 127.255.255.255 działają jako adresy pętli zwrotnej. Najbardziej typowy, używany w tym celu adres, to 127.0.0.1 z nazwą localhost. W przypadku protokołu IPv6 adres zarezerwowany dla pętli zwrotnych jest zwykle uproszczony do postaci ::1, ponieważ pełny adres jest bardzo długi. Właściwość logiczna isLoopback komponentu NetworkAddress będzie zwracać wartość true, jeśli adres przechowywany przez obiekt jest adresem pętli zwrotnej.

Adresy multiemisji to szeroki zakres adresów zarezerwowanych na potrzeby komunikacji typu multiemisyjnego, w przypadku której informacje są adresowane do grupy komputerów docelowych. W aplikacjach zbudowanych przy użyciu modułu AppFramework multiemisja jest najczęściej używana wraz z protokołem transmisyjnym User Datagram Protocol (UDP), w przypadku którego prędkość ma wyższy priorytet niż niezawodność. Istnieje też wiele innych sposobów wykorzystania tej funkcji. W przypadku urządzeń IPv4 zakres adresów multiemisji wynosi od 224.0.0.0 do 239.255.255.255, podczas gdy adresy multiemisji dla protokołu IPv6 używają prefiksu ff00::/8. Jednak w obu protokołach istnieją sekcje tych zakresów zarezerwowane dla bardziej specyficznych zastosowań multiemisji. Właściwość logiczna isMulticast komponentu NetworkAddress zwróci wartość true, jeśli adres przechowywany przez obiekt jest dowolnym rodzajem adresu multiemisji.

Komponent NetworkAddress zawiera również właściwość isNull służącą do identyfikowania adresów pustych, które nie są poprawne dla żadnego hosta ani interfejsu oraz metodę isInSubnet służącą do określania, czy przechowywany adres IP należy do danej podsieci. Tych funkcji można używać w celu zagwarantowania, że będą przekazywane tylko te adresy IP, które są poprawne ze względu na potrzeby aplikacji.