Программирование сетей с Qt
Модуль Qt Network предоставляет классы, которые позволяют создавать TCP/IP-клиенты и серверы. Он предлагает низкоуровневые классы, такие как QTcpSocket, QTcpServer и QUdpSocket, которые представляют низкоуровневые сетевые концепции, и высокоуровневые классы, такие как QNetworkRequest, QNetworkReply и QNetworkAccessManager, для выполнения сетевых операций с использованием общих протоколов.
Классы Qt для программирования сетей
Страница классов Qt Network на C++ содержит список классов C++ в Qt Network.
Высокоуровневые сетевые операции для HTTP
API доступа к сети — это набор классов для выполнения общих сетевых операций. API предоставляет абстракционный слой над конкретными операциями и протоколами (например, получение и отправка данных по HTTP) и раскрывает только классы, функции и сигналы для общих или высокоуровневых концепций.
Сеть запросы представлены классом QNetworkRequest, который также служит контейнером для информации, связанной с запросом, такой как заголовки и используемое шифрование. Указанный при создании объекта запроса URL определяет протокол, используемый для запроса. В настоящее время поддерживаются URL HTTP и локальных файлов для загрузки и скачивания.
Координацию сетевых операций выполняет класс QNetworkAccessManager. После создания запроса этот класс используется для его отправки и вывода сигналов для отчета о его прогрессе. Менеджер также координирует использование cookie для хранения данных на клиенте, запросы аутентификации и использование прокси.
Ответы на сетевые запросы представлены классом QNetworkReply; они создаются QNetworkAccessManager при отправке запроса. Сигналы, предоставляемые QNetworkReply, могут использоваться для мониторинга каждого ответа индивидуально, или разработчики могут выбрать использование сигналов менеджера для этой цели вместо этого и отказаться от ссылок на ответы. Поскольку QNetworkReply является подклассом QIODevice, ответы могут обрабатываться синхронно или асинхронно; то есть как блокирующие или неблокирующие операции.
Каждое приложение или библиотека может создать один или несколько экземпляров QNetworkAccessManager для обработки сетевого взаимодействия.
Использование TCP с QTcpSocket и QTcpServer
TCP (Transmission Control Protocol) — это низкоуровневый сетевой протокол, используемый большинством интернет-протоколов, включая HTTP и FTP, для передачи данных. Это надёжный, потоковый, ориентированный на соединение транспортный протокол. Он особенно подходит для непрерывной передачи данных.
<img alt="Поток TCP" src="data:image/png;base64,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
Класс QTcpSocket предоставляет интерфейс для TCP. Вы можете использовать QTcpSocket для реализации стандартных сетевых протоколов, таких как POP3, SMTP и NNTP, а также пользовательских протоколов.
Для начала передачи данных необходимо установить TCP-соединение с удалённым хостом и портом. После установления соединения IP-адрес и порт удалённого узла доступны через QTcpSocket::peerAddress() и QTcpSocket::peerPort(). В любой момент удалённый узел может разорвать соединение, и передача данных немедленно прекратится.
QTcpSocket работает асинхронно и генерирует сигналы для отчётности о изменениях состояния и ошибках, как и QNetworkAccessManager. Он полагается на цикл событий для обнаружения входящих данных и автоматической отправки исходящих данных. Вы можете записать данные в сокет с помощью QTcpSocket::write(), а прочитать – используя QTcpSocket::read(). QTcpSocket представляет собой два независимых потока данных: один для чтения и один для записи.
Поскольку QTcpSocket наследуется от QIODevice, его можно использовать с QTextStream и QDataStream. При чтении из QTcpSocket, необходимо убедиться, что достаточно данных доступно, вызвав QTcpSocket::bytesAvailable() предварительно.
Если вам нужно обработать входящие TCP-соединения (например, в приложении-сервере), используйте класс QTcpServer. Вызовите QTcpServer::listen() для настройки сервера и подключитесь к сигналу QTcpServer::newConnection(), который генерируется при подключении каждого клиента. В вашем слоте вызовите QTcpServer::nextPendingConnection() для принятия соединения и используйте возвращаемый QTcpSocket для связи с клиентом.
Хотя большинство его функций работают асинхронно, возможно использование QTcpSocket синхронно (т.е. блокирующим). Для получения блокирующего поведения вызовите функции waitFor…() QTcpSocket; эти функции приостанавливают вызывающую нить до тех пор, пока не будет сгенерирован сигнал. Например, после вызова неблокирующей функции QTcpSocket::connectToHost(), вызовите QTcpSocket::waitForConnected(), чтобы заблокировать нить до тех пор, пока не будет сгенерирован сигнал connected().
Синхронные сокеты часто приводят к коду с более простым потоком управления. Основным недостатком подхода waitFor…() является то, что события не будут обрабатываться во время блокировки функции waitFor…(). Если это используется в нити пользовательского интерфейса, это может заморозить пользовательский интерфейс приложения. По этой причине рекомендуется использовать синхронные сокеты только в не-GUI нитях. При синхронном использовании QTcpSocket не требует цикла событий.
Примеры Fortune Client и Fortune Server демонстрируют, как использовать QTcpSocket и QTcpServer для написания TCP клиент-серверных приложений. Также см. пример Blocking Fortune Client для примера использования синхронного QTcpSocket в отдельной нити (без использования цикла событий) и Threaded Fortune Server для примера многопоточного TCP-сервера с одной нитью на активного клиента.
Использование UDP с QUdpSocket
UDP (User Datagram Protocol) – лёгкий, ненадежный, ориентированный на датаграммы, бессоединённый протокол. Он может использоваться, когда надёжность не важна. Например, сервер, который сообщает время суток, может выбрать UDP. Если датаграмма со временем суток потеряна, клиент может просто сделать ещё один запрос.
END_OF_DOCUMENT_MARKER<img alt="UDP Пакеты" src="data:image/png;base64,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
Класс QUdpSocket позволяет отправлять и получать UDP-дейтаграммы. Он наследуется от QAbstractSocket, и поэтому разделяет большую часть интерфейса QTcpSocket. Основное отличие заключается в том, что QUdpSocket передает данные в виде дейтаграмм, а не как непрерывный поток данных. Короче говоря, дейтаграмма — это пакет данных ограниченного размера (обычно меньше 512 байт), содержащий IP-адрес и порт отправителя и получателя дейтаграммы, а также передаваемые данные.
QUdpSocket поддерживает IPv4-вещание. Вещание часто используется для реализации протоколов обнаружения сети, например, для поиска узла в сети с наибольшим свободным объемом жесткого диска. Один узел передает дейтаграмму в сеть, которую получают все остальные узлы. Каждый узел, получивший запрос, отправляет ответ отправителю со своим текущим объемом свободного дискового пространства. Инициатор ожидает, пока не получит ответы от всех узлов, и затем может выбрать сервер с наибольшим свободным пространством для хранения данных. Чтобы передать дейтаграмму по вещанию, просто отправьте ее на специальный адрес QHostAddress::Broadcast (255.255.255.255) или на адрес вещания вашей локальной сети.
QUdpSocket::bind() подготавливает сокет для приема входящих дейтаграмм, аналогично QTcpServer::listen() для TCP-серверов. Всякий раз, когда прибывает одна или несколько дейтаграмм, QUdpSocket излучает сигнал readyRead(). Вызовите QUdpSocket::readDatagram() для чтения дейтаграммы.
Примеры Broadcast Sender и Broadcast Receiver демонстрируют, как написать UDP-отправителя и UDP-получателя с использованием Qt.
QUdpSocket также поддерживает мультикаст. Примеры Multicast Sender и Multicast Receiver демонстрируют, как использовать UDP-мультимедийные клиенты.
Разрешение имен хостов с помощью QHostInfo
Перед установлением сетевого подключения QTcpSocket и QUdpSocket выполняют поиск имени, переводя имя хоста, к которому вы подключаетесь, в IP-адрес. Обычно эта операция выполняется с использованием протокола DNS (Domain Name Service).
QHostInfo предоставляет статическую функцию, которая позволяет выполнить такой поиск самостоятельно. Вызвав QHostInfo::lookupHost() с именем хоста, указателем объекта QObject и подписью слота, QHostInfo выполнит поиск имени и вызовет заданный слот, когда результаты будут готовы. Фактический поиск выполняется в отдельном потоке, используя собственные методы операционной системы для выполнения поиска имен.
QHostInfo также предоставляет статическую функцию QHostInfo::fromName(), которая принимает имя хоста в качестве аргумента и возвращает результаты. В этом случае поиск имени выполняется в том же потоке, что и вызывающий поток. Эта перегрузка полезна для приложений, не использующих графический интерфейс пользователя, или для выполнения поиска имен в отдельном, не графическом потоке. (Вызов этой функции в потоке GUI может привести к зависанию интерфейса пользователя, пока функция блокирована во время поиска.)
Поддержка сетевых прокси
Сетевое общение с Qt может выполняться через прокси, которые направляют или фильтруют сетевой трафик между локальными и удаленными подключениями.
Отдельные прокси представлены классом QNetworkProxy, который используется для описания и настройки подключения к прокси. Поддерживаются типы прокси, работающие на разных уровнях сетевого взаимодействия, при этом поддержка SOCKS 5 позволяет выполнять проксирование сетевого трафика на низком уровне, а проксирование HTTP и FTP работает на уровне протокола. См. QNetworkProxy::ProxyType для получения дополнительной информации.
Проксирование может быть включено на основе каждого сокета или для всех сетевых взаимодействий в приложении. Новорожденный сокет может использовать прокси, вызвав его функцию QAbstractSocket::setProxy() перед подключением. Весьма важное проксирование для всех последующих подключений сокетов можно включить с помощью функции QNetworkProxy::setApplicationProxy().
Прокси-фабрики используются для создания правил для использования прокси. QNetworkProxyFactory предоставляет прокси на основе запросов для определенных типов прокси. Сами запросы закодированы в объектах QNetworkProxyQuery, которые позволяют выбирать прокси на основе ключевых критериев, таких как назначение прокси (TCP, UDP, TCP-сервер, запрос URL), локальный порт, удаленный хост и порт и используемый протокол (HTTP, FTP и т.д.).
QNetworkProxyFactory::proxyForQuery() используется для непосредственного запроса фабрики. Политику проксирования на уровне всего приложения можно реализовать, передав фабрику в QNetworkProxyFactory::setApplicationProxyFactory(), а пользовательскую политику проксирования можно создать, создав подкласс QNetworkProxyFactory; подробности см. в документации к классу.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qtnetwork-programming.html