Информация сети

Приложение часто требует информацию о сетевом статусе или определенном контексте, если подразумевается запуск только при подключении по определенному IP, гарантии подключения с использованием конкретной конфигурации, или только если устройство всегда онлайн.Хотя AppFramework не имеет возможности контролировать эти настройки на системном уровне, есть специальные компоненты, позволяющие получить доступ к этой информации для приложения.

Системные конфигурации

Сетевые конфигурации поддерживаются и хранятся самим устройством, и обычно не требуют специальной поддержки приложением. Тем не менее, в ситуациях, когда приложению необходимо считать информацию о сетевом статусе устройства, компонент Network обеспечивает доступ только для чтения к системной информации о сетевой конфигурации, позволяя приложениям идентифицировать системные подключения и возможности.

Для множества приложений все, что необходимо - чтобы устройство всегда было в сети (онлайн), и чтобы в любой момент была возможность подключиться к сервисам. Для этого достаточно использовать свойство isOnline, в котором булево значение показывает, находится ли устройство в настоящий момент онлайн, или нет. Это свойство можно использовать для изменения поведения приложения для выполнения альтернативных функций, для которых не требуется доступ к сети, или для отображения сообщения об ошибке, в случае если необходим режим онлайн.

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

Сетевые адреса

Компонент NetworkAddress сохраняет один сетевой IP-адрес. Он используется вместе с другими компонентами для выполнения таких действия, как подключение к хосту или настройка сервер, и, также, предоставляет свойства для идентификации, имеет ли IP-адрес специальное назначение, например адрес обратной связи или групповой адрес.

Адреса обратной связи - определенный диапазон IP-адресов, предназначенный для отправки исходящих сигналов на тот же компьютер, в основном для тестирования. Для устройств IPv4, для адресов обратной связи зарезервирован диапазон от 127.0.0.0 до 127.255.255.255, среди которых в основном используется 127.0.0.1 вместе с именем localhost. Для IPv6, адреса, зарезервированные для обратной связи обычно упрощены до ::1, так как полный адрес очень длинный. Булево свойство NetworkAddress isLoopback возвращает истину, если адрес, сохраненный объектом, представляет собой адрес обратной связи.

Групповые адреса - широкий диапазон адресов, резервированный для группового подключения, где информация распределяется по группе целевых компьютеров. Если приложение построено в AppFramework, групповые адреса главным образом используются для User Datagram Protocol (UDP) - протокола передачи, в котором поддерживается приоритет скорости над надежностью, но также и для других целей. Для устройств IPv4 диапазон групповых адресов от 224.0.0.0 до 239.255.255.255, а для устройств IPv6 групповые адреса используют префикс ff00::/8. Тем не менее, оба этих протокола резервируют эти диапазоны для специфического использования групповой передачи. Булево свойство NetworkAddress isMulticast возвращает истину, если адрес, сохраненный объектом, представляет собой групповой адрес.

NetworkAddress также содержит свойство isNull для идентификации пустых адресов, некорректных для хоста или интерфейса, и метод isInSubnet для определения, присутствует ли сохраненный IP адрес в этой подсети. Эти функции используются для гарантии, что допускаются только корректные для приложения IP-адреса.