Класс 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 в качестве полезной нагрузки для этого запроса. Нулевой указатель устройства рассматривается как пустое содержимое.
Примечание: Устройство должно быть открыто и доступно для чтения перед вызовом этого метода.
См. также get(), put(), deleteResource(), observe() и discover().
QCoapReply *QCoapClient::post(const QUrl &url, const QByteArray &data = QByteArray())
Это перегруженный метод.
Отправляет запрос POST на url и возвращает новый объект QCoapReply. Использует data в качестве полезной нагрузки для этого запроса.
См. также get(), put(), deleteResource(), observe() и discover().
QCoapReply *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 в качестве полезной нагрузки для этого запроса. Указатель device со значением null обрабатывается как пустое содержимое.
Примечание: Устройство должно быть открытым и доступным для чтения перед вызовом этой функции.
См. также 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)
Устанавливает значение, определённое в RFC 7252 - Раздел 4.2, в ackRandomFactor. Это значение должно быть больше или равно 1. По умолчанию 1.5.
См. также setAckTimeout().
void QCoapClient::setAckTimeout(uint ackTimeout)
Устанавливает значение, определённое в 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)
Устанавливает значение, определённое в 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.1/qcoapclient.html