QCoapClient类
QCoapClient类允许应用程序发送CoAP请求并接收回复。更多信息...
头文件 | #include <QCoapClient> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Coap) target_link_libraries(mytarget PRIVATE Qt6::Coap) |
qmake | QT += coap |
继承 | QObject |
注意:此类中所有函数都可重入.
公开函数
QCoapClient(QtCoap::SecurityMode securityMode = QtCoap::SecurityMode::NoSecurity, QObject *parent = nullptr) | |
虚拟 | ~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()函数。
您还可以使用观察请求。这可以像上面那样使用,或者更方便地使用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)
为给定的securityMode构造QCoapClient对象,并设置parent为父对象。
securityMode的默认值为QtCoap::NoSecurity,这会禁用安全。
这使用QCoapQUdpConnection连接;要使用自定义传输,派生QCoapConnection并将实例传递给其他构造函数之一。
[虚拟 noexcept]
QCoapClient::~QCoapClient()
销毁QCoapClient对象并释放任何资源。请注意,从这个类返回的QCoapReply对象将QCoapClient设置为它们的父对象,这意味着它们将随着它一起被删除。
void QCoapClient::cancelObserve(QCoapReply *notifiedReply)
这是一个重载函数。
使用observe()方法返回的回复notifiedReply取消资源的观察。
另请参阅:observe。
void QCoapClient::cancelObserve(const QUrl &url)
这是一个重载函数。
取消对由 url 确定的资源的观察。
另请参阅:observe。
QCoapReply *QCoapClient::deleteResource(const QCoapRequest &request)
使用 DELETE 方法发送请求并返回一个新的 QCoapReply 对象。
另请参阅 get()、put()、post()、observe() 和 discover。
QCoapReply *QCoapClient::deleteResource(const QUrl &url)
这是一个重载函数。
向目标 url 发送 DELETE 请求。
另请参阅 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"))
这是一个重载函数。
发现已加入给定 port 的 group 端点可用的资源。返回一个新的 QCoapResourceDiscoveryReply 对象,每次响应到达时都会发出 QCoapResourceDiscoveryReply::discovered() 信号。其中 group 是 CoAP 组播组地址之一,默认为 QtCoap::AllCoapNodesIPv4。
发现路径默认为 "/.well-known/core",但可以通过传入不同的路径给 discoveryPath 来更改。发现过程见 RFC 6690。
另请参阅 get()、post()、put()、deleteResource() 和 observe。
[信号]
void QCoapClient::error(QCoapReply *reply, QtCoap::Error error)
每当发生错误时都会发出此信号。如果错误与特定 QCoapReply 无关,reply 参数可以是 nullptr
。error 参数包含错误代码。
另请参阅 finished(),QCoapReply::error() 和 QCoapReply::finished
[信号]
void QCoapClient::finished(QCoapReply *reply)
当收到 CoAP 回复时(无论成功还是错误),都会与 QCoapReply::finished() 信号一起发出此信号。 reply 参数将包含刚刚收到的回复的指针。
另请参阅 error(),QCoapReply::finished() 和 QCoapReply::error()。
QCoapReply *QCoapClient::get(const QCoapRequest &request)
使用 GET 方法发送 request,并返回一个新的 QCoapReply 对象。
另请参阅 post(),put(),deleteResource(),observe() 和 discover()。
QCoapReply *QCoapClient::get(const QUrl &url)
这是一个重载函数。
向 url 发送 GET 请求并返回一个新的 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())
使用 POST 方法发送 request 并返回一个新的 QCoapReply 对象。使用 data 作为此请求的有效负载。如果 data 为空,则使用 request 的有效负载。
另请参阅get(),put(),deleteResource(),observe()和discover()。
QCoapReply *QCoapClient::post(const QCoapRequest &request, QIODevice *device)
这是一个重载函数。
使用POST方法发送请求并返回一个新的QCoapReply对象。使用device内容作为此请求的有效荷载。空设备被视为空内容。
注意:在调用此函数之前,设备必须打开并可读。
另请参阅get(),put(),deleteResource(),observe()和discover()。
QCoapReply *QCoapClient::post(const QUrl &url, const QByteArray &data = QByteArray())
这是一个重载函数。
向url发送一个POST请求并返回一个新的QCoapReply对象。使用data作为此请求的有效荷载。
另请参阅get(),put(),deleteResource(),observe()和discover()。
QCoapReply *QCoapClient::put(const QCoapRequest &request, const QByteArray &data = QByteArray())
使用PUT方法发送请求并返回一个新的QCoapReply对象。使用data作为此请求的有效荷载。如果data为空,则使用request的有效荷载。
另请参阅get(),post(),deleteResource(),observe()和discover()。
QCoapReply *QCoapClient::put(const QCoapRequest &request, QIODevice *device)
这是一个重载函数。
使用PUT方法发送请求并返回一个新的QCoapReply对象。使用device内容作为此请求的有效荷载。空设备被视为空内容。
注意:在调用此函数之前,设备必须打开并可读。
另请参阅get(),post(),deleteResource(),observe()和discover()。
QCoapReply *QCoapClient::put(const QUrl &url, const QByteArray &data = QByteArray())
这是一个重载函数。
向url发送一个PUT请求并返回一个新的QCoapReply对象。使用data作为此请求的有效荷载。
另请参阅get(),post(),deleteResource(),observe()和discover()。
[信号]
void QCoapClient::responseToMulticastReceived(QCoapReply *reply, const QCoapMessage &message, const QHostAddress &sender)
此信号在接收到单播响应时发出。参数reply包含刚刚接收到的响应的指针,message包含有效荷载和消息细节,而sender包含发送者的地址。
另请参阅 error(),QCoapReply::finished() 和 QCoapReply::error()。
void QCoapClient::setAckRandomFactor(double ackRandomFactor)
设置在 RFC 7252 - 第 4.2 节 中定义的 ACK_RANDOM_FACTOR
值为 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。块大小必须是 2 的幂。
void QCoapClient::setMaximumRetransmitCount(uint maximumRetransmitCount)
将 RFC 7252 - 第 4.2 节 中定义的 MAX_RETRANSMIT
值设置为 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。
© 2024 Qt公司有限公司。本文件中包含的文档贡献权属于其各自的所有者。本文件提供的文档根据《自由软件基金会》(Free Software Foundation)发布的GNU自由文档许可协议(GPL)1.3版进行许可。Qt及其相关商标是芬兰以及/或全球其他国家的Qt公司有限公司的注册商标。其他所有商标均为其各自所有者的财产。