Класс QCoapClient
Класс QCoapClient позволяет приложению отправлять запросы CoAP и получать ответы. Подробнее...
| Заголовок: | #include <QCoapClient> |
| qmake: | QT += coap |
| Наследует: | QObject |
Примечание: Все функции в этом классе являются перевходными.
Открытые функции
| QCoapClient(QtCoap::SecurityMode securityMode = QtCoap::SecurityMode::NoSecurity, QObject *parent = nullptr) | |
| virtual | ~QCoapClient() |
| void | cancelObserve(QCoapReply *notifiedReply) |
| void | cancelObserve(const QUrl &url) |
| QCoapReply * | deleteResource(const QCoapRequest &request) |
| QCoapReply * | deleteResource(const QUrl &url) |
| void | disconnect() |
| QCoapResourceDiscoveryReply * | discover(const QUrl &url, const QString &discoveryPath = QLatin1String("/.well-known/core")) |
| QCoapResourceDiscoveryReply * | discover(QtCoap::MulticastGroup group = QtCoap::MulticastGroup::AllCoapNodesIPv4, int port = QtCoap::DefaultPort, const QString &discoveryPath = QLatin1String("/.well-known/core")) |
| QCoapReply * | get(const QCoapRequest &request) |
| QCoapReply * | get(const QUrl &url) |
| QCoapReply * | observe(const QCoapRequest &request) |
| QCoapReply * | observe(const QUrl &url) |
| QCoapReply * | post(const QCoapRequest &request, const QByteArray &data = QByteArray()) |
| QCoapReply * | post(const QCoapRequest &request, QIODevice *device) |
| QCoapReply * | post(const QUrl &url, const QByteArray &data = QByteArray()) |
| QCoapReply * | put(const QCoapRequest &request, const QByteArray &data = QByteArray()) |
| QCoapReply * | put(const QCoapRequest &request, QIODevice *device) |
| QCoapReply * | put(const QUrl &url, const QByteArray &data = QByteArray()) |
| void | setAckRandomFactor(double ackRandomFactor) |
| void | setAckTimeout(uint ackTimeout) |
| void | setBlockSize(quint16 blockSize) |
| void | setMaximumRetransmitCount(uint maximumRetransmitCount) |
| void | setMaximumServerResponseDelay(uint responseDelay) |
| void | setMinimumTokenSize(int tokenSize) |
| void | setSecurityConfiguration(const QCoapSecurityConfiguration &configuration) |
| void | setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value) |
Сигналы
| void | error(QCoapReply *reply, QtCoap::Error error) |
| void | finished(QCoapReply *reply) |
| void | responseToMulticastReceived(QCoapReply *reply, const QCoapMessage &message, const QHostAddress &sender) |
Подробное описание
Класс QCoapClient содержит сигналы, которые срабатывают при получении ответа на отправленный запрос.
Приложение может использовать QCoapClient для отправки запросов по сети CoAP. Он предоставляет функции для стандартных запросов: каждый возвращает объект QCoapReply, в который должна быть доставлена данные ответа; это можно прочитать, когда прибудет сигнал finished().
Простой запрос можно отправить следующим образом:
QCoapClient *client = new QCoapClient(this);
connect(client, &QCoapClient::finished, this, &TestClass::slotFinished);
client->get(QCoapRequest(Qurl("coap://coap.me/test"))); Примечание: После завершения обработки запроса пользователь несет ответственность за удаление объекта QCoapReply в соответствующее время. Не удаляйте его напрямую внутри слота, подключенного к finished(). Можно использовать функцию deleteLater().
Также можно использовать запрос observe. Это можно использовать как выше, или более удобно с сигналом QCoapReply::notified():
QCoapRequest request = QCoapRequest(Qurl("coap://coap.me/obs"));
QCoapReply *reply = client->observe(request);
connect(reply, &QCoapReply::notified, this, &TestClass::slotNotified); И наблюдение можно отменить следующим образом:
client->cancelObserve(reply);
Когда приходит ответ, QCoapClient генерирует сигнал finished().
Примечание: Для запроса обнаружения возвращаемый объект является QCoapResourceDiscoveryReply. Он может использоваться так же, как QCoapReply, но также содержит список ресурсов.
См. также QCoapRequest, QCoapReply и QCoapResourceDiscoveryReply.
Документация по функциям-членам
QCoapClient::QCoapClient(QtCoap::SecurityMode securityMode = QtCoap::SecurityMode::NoSecurity, QObject *parent = nullptr)
Создает объект QCoapClient для заданного securityMode и устанавливает parent в качестве родительского объекта.
По умолчанию для securityMode установлено QtCoap::NoSecurity, что отключает безопасность.
Это соединение выполняется с помощью QCoapQUdpConnection; для использования пользовательского транспорта следует переопределить QCoapConnection и передать экземпляр в один из других конструкторов.
[signal] void QCoapClient::error(QCoapReply *reply, QtCoap::Error error)
Этот сигнал генерируется всякий раз, когда возникает ошибка. Параметр reply может быть nullptr если ошибка не связана с определенным объектом QCoapReply. Параметр error содержит код ошибки.
См. также finished(), QCoapReply::error() и QCoapReply::finished().
[signal] void QCoapClient::finished(QCoapReply *reply)
Этот сигнал генерируется вместе с сигналом QCoapReply::finished() всякий раз, когда получен ответ CoAP, после успешного завершения или ошибки. Параметр reply будет содержать указатель на только что полученный ответ.
См. также error(), QCoapReply::finished() и QCoapReply::error().
[signal] void QCoapClient::responseToMulticastReceived(QCoapReply *reply, const QCoapMessage &message, const QHostAddress &sender)
Этот сигнал испускается, когда приходит одноадресной ответ на многоадресную запрос. Параметр reply содержит указатель на ответ, который только что был получен, message содержит полезную нагрузку и детали сообщения, а sender содержит адрес отправителя.
См. также error(), QCoapReply::finished(), и QCoapReply::error().
[virtual] QCoapClient::~QCoapClient()
Удаляет объект QCoapClient и освобождает все ресурсы. Обратите внимание, что объекты QCoapReply, возвращаемые этим классом, имеют QCoapClient в качестве родителя, что означает, что они будут удалены вместе с ним.
void QCoapClient::cancelObserve(QCoapReply *notifiedReply)
Это перегруженный метод.
Отменяет наблюдение за ресурсом, используя ответ notifiedReply, возвращённый методом observe().
См. также observe().
void QCoapClient::cancelObserve(const QUrl &url)
Это перегруженный метод.
Отменяет наблюдение за ресурсом, определяемым url.
См. также observe().
QCoapReply *QCoapClient::deleteResource(const QCoapRequest &request)
Отправляет request с помощью метода DELETE и возвращает новый объект QCoapReply.
См. также get(), put(), post(), observe(), и discover().
QCoapReply *QCoapClient::deleteResource(const QUrl &url)
Это перегруженный метод.
Отправляет запрос DELETE на целевой url.
См. также get(), put(), post(), observe(), и discover().
void QCoapClient::disconnect()
Закрывает открытые сокеты и соединения, чтобы освободить транспорт.
Примечание: В защищенном режиме это нужно вызывать перед изменением конфигурации безопасности или подключением к другому серверу.
См. также setSecurityConfiguration().
QCoapResourceDiscoveryReply *QCoapClient::discover(const QUrl &url, const QString &discoveryPath = QLatin1String("/.well-known/core"))
Определяет доступные ресурсы по заданному url и возвращает новый объект QCoapResourceDiscoveryReply, который испускает сигнал QCoapResourceDiscoveryReply::discovered() всякий раз, когда приходит ответ.
Путь обнаружения по умолчанию "/.well-known/core", но его можно изменить, передав другой путь в discoveryPath. Обнаружение описано в RFC 6690.
См. также get(), post(), put(), deleteResource(), и observe().
QCoapResourceDiscoveryReply *QCoapClient::discover(QtCoap::MulticastGroup group = QtCoap::MulticastGroup::AllCoapNodesIPv4, int port = QtCoap::DefaultPort, const QString &discoveryPath = QLatin1String("/.well-known/core"))
Это перегруженный метод.
Обнаруживает доступные ресурсы на конечных точках, которые присоединились к group на заданном port. Возвращает новый объект QCoapResourceDiscoveryReply, который испускает сигнал QCoapResourceDiscoveryReply::discovered() при получении ответа. Параметр group — это один из многоадресных адресов CoAP и по умолчанию равен QtCoap::AllCoapNodesIPv4.
Путь обнаружения по умолчанию "/.well-known/core", но его можно изменить, передав другой путь в discoveryPath. Обнаружение описано в RFC 6690.
См. также get(), post(), put(), deleteResource(), и observe().
QCoapReply *QCoapClient::get(const QCoapRequest &request)
Отправляет request с помощью метода GET и возвращает новый объект QCoapReply.
См. также post(), put(), deleteResource(), observe(), и discover().
QCoapReply *QCoapClient::get(const QUrl &url)
Это перегруженный метод.
Отправляет запрос GET на url и возвращает новый объект QCoapReply.
См. также post(), put(), deleteResource(), observe(), и discover().
QCoapReply *QCoapClient::observe(const QCoapRequest &request)
Отправляет запрос на наблюдение за целевым ресурсом request и возвращает новый объект QCoapReply, который испускает сигнал QCoapReply::notified() при поступлении нового уведомления.
См. также cancelObserve(), get(), post(), put(), deleteResource(), и discover().
QCoapReply *QCoapClient::observe(const QUrl &url)
Это перегруженный метод.
Отправляет запрос на наблюдение за целевым ресурсом url и возвращает новый объект QCoapReply, который испускает сигнал QCoapReply::notified() при поступлении нового уведомления.
См. также cancelObserve(), get(), post(), put(), deleteResource(), и discover().
QCoapReply *QCoapClient::post(const QCoapRequest &request, const QByteArray &data = QByteArray())
Отправляет request с помощью метода POST и возвращает новый объект QCoapReply. Использует data в качестве полезной нагрузки для этого запроса. Если data пустая, используется полезная нагрузка из request.
См. также get(), put(), deleteResource(), observe(), и discover().
QCoapReply *QCoapClient::post(const QCoapRequest &request, QIODevice *device)
Это перегруженный метод.
Отправляет request с помощью метода POST и возвращает новый объект QCoapReply. Использует содержимое device как полезную нагрузку для этого запроса. Указатель null на device рассматривается как пустое содержимое.
Примечание: Устройство должно быть открыто и доступно для чтения перед вызовом этой функции.
См. также get(), put(), deleteResource(), observe(), и discover().
QCoapReply *QCoapClient::post(const QUrl &url, const QByteArray &data = QByteArray())
Это перегруженный метод.
Отправляет запрос POST на url и возвращает новый объект QCoapReply. Использует data в качестве полезной нагрузки для этого запроса.
См. также get(), put(), deleteResource(), observe(), и discover().
END_OF_DOCUMENT_MARKERQCoapReply *QCoapClient::put(const QCoapRequest &request, const QByteArray &data = QByteArray())
Отправляет request с помощью метода PUT и возвращает новый объект QCoapReply. Использует data в качестве полезной нагрузки для этого запроса. Если data пустая, используется полезная нагрузка из request.
См. также get(), post(), deleteResource(), observe(), и discover().
QCoapReply *QCoapClient::put(const QCoapRequest &request, QIODevice *device)
Это перегруженная функция.
Отправляет request с помощью метода PUT и возвращает новый объект QCoapReply. Использует содержимое device в качестве полезной нагрузки для этого запроса. Указатель на null device обрабатывается как пустое содержимое.
Примечание: Устройство должно быть открыто и доступно для чтения перед вызовом этой функции.
См. также get(), post(), deleteResource(), observe(), и discover().
QCoapReply *QCoapClient::put(const QUrl &url, const QByteArray &data = QByteArray())
Это перегруженная функция.
Отправляет запрос PUT на url и возвращает новый объект QCoapReply. Использует data в качестве полезной нагрузки для этого запроса.
См. также get(), post(), deleteResource(), observe(), и discover().
void QCoapClient::setAckRandomFactor(double ackRandomFactor)
Устанавливает значение ACK_RANDOM_FACTOR, определенное в RFC 7252 - Раздел 4.2, на ackRandomFactor. Это значение должно быть больше или равно 1. По умолчанию 1.5.
См. также setAckTimeout().
void QCoapClient::setAckTimeout(uint ackTimeout)
Устанавливает значение ACK_TIMEOUT, определенное в RFC 7252 - Раздел 4.2, на ackTimeout в миллисекундах. По умолчанию 2000 мс.
Этот таймаут применяется только к подтверждаемым сообщениям. Фактический таймаут для надежных передач — случайное значение между ACK_TIMEOUT и ACK_TIMEOUT * ACK_RANDOM_FACTOR.
См. также setAckRandomFactor().
void QCoapClient::setBlockSize(quint16 blockSize)
Устанавливает максимальный размер блока, используемый протоколом, на blockSize при отправке запросов и получении ответов. Размер блока должен быть степенью двойки.
void QCoapClient::setMaximumRetransmitCount(uint maximumRetransmitCount)
Устанавливает значение MAX_RETRANSMIT, определенное в RFC 7252 - Раздел 4.2, на maximumRetransmitCount. Это значение должно быть меньше или равно 25. По умолчанию 4.
void QCoapClient::setMaximumServerResponseDelay(uint responseDelay)
Устанавливает значение MAX_SERVER_RESPONSE_DELAY на responseDelay в миллисекундах. По умолчанию 250 секунд.
Как определено в RFC 7390 - Раздел 2.5, MAX_SERVER_RESPONSE_DELAY — ожидаемый максимальный задержка ответа от всех серверов, которым клиент может отправить многоадресную заявку.
void QCoapClient::setMinimumTokenSize(int tokenSize)
Устанавливает минимальный размер токена на tokenSize в байтах. По соображениям безопасности рекомендуется использовать токены длиной не менее 4 байтов. Значение по умолчанию для этого параметра — 4 байта.
void QCoapClient::setSecurityConfiguration(const QCoapSecurityConfiguration &configuration)
Устанавливает параметры конфигурации безопасности из configuration. Конфигурация будет проигнорирована, если используется режим QtCoap::NoSecurity.
Примечание: Этот метод должен быть вызван до начала рукопожатия. Если вам нужно изменить конфигурацию безопасности после установления защищенного соединения с сервером, клиент должен быть сначала отключен.
См. также disconnect().
void QCoapClient::setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value)
Устанавливает параметр сокета QUdpSocket option на value.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qcoapclient.html