QCoapClient Class

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)
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 と同じように使用できるが、リソースのリストも含む。

QCoapRequestQCoapReply 、およびQCoapResourceDiscoveryReplyも参照のこと

メンバー関数ドキュメント

[explicit] QCoapClient::QCoapClient(QtCoap::SecurityMode securityMode = QtCoap::SecurityMode::NoSecurity, QObject *parent = nullptr)

与えられたsecurityMode のQCoapClientオブジェクトを構築し、parent を親オブジェクトとして設定します。

securityMode のデフォルトは、セキュリティを無効にするQtCoap::NoSecurity です。

これはQCoapQUdpConnectionを使用して接続します。カスタム・トランスポートを使用するには、QCoapConnectionをサブクラス化し、他のコンストラクタのいずれかにインスタンスを渡します。

[virtual 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 メソッドを使用してrequest を送信し、新しい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::discovered() シグナルを発する新しいQCoapResourceDiscoveryReply オブジェクトを返す。

発見パスのデフォルトは「/.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"))

これはオーバーロードされた関数である。

与えられたportgroup に参加したエンドポイントで利用可能なリソースを発見する。レスポンスが到着するたびにQCoapResourceDiscoveryReply::discovered() シグナルを発する新しいQCoapResourceDiscoveryReply オブジェクトを返します。group は CoAP マルチキャストグループアドレスのひとつであり、デフォルトはQtCoap::AllCoapNodesIPv4 である。

ディスカバリーパスのデフォルトは「/.well-known/core」であるが、discoveryPath に別のパスを渡すことで変更できる。ディスカバリはRFC 6690に記述されている。

get()、post()、put()、deleteResource()、observe()も参照のこと

[signal] void QCoapClient::error(QCoapReply *reply, QtCoap::Error error)

このシグナルは、エラーが発生するたびに発せられる。エラーが特定のQCoapReply に関連していない場合、reply パラメータはnullptr となる。error パラメータにはエラー・コードが含まれる。

finished()、QCoapReply::error()、QCoapReply::finished()も参照のこと

[signal] 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::notified() シグナルを発する新しいQCoapReply オブジェクトを返す。

cancelObserve(),get(),post(),put(),deleteResource(),discover()も参照

QCoapReply *QCoapClient::observe(const QUrl &url)

これはオーバーロードされた関数である。

ターゲットurl を観測するリクエストを送信し、新しい通知が到着するたびにQCoapReply::notified() シグナルを発する新しいQCoapReply オブジェクトを返します。

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 メソッドを使用してrequest を送信し、新しい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 メソッドを使用してrequest を送信し、新しいQCoapReply オブジェクトを返す。このリクエストのペイロードとしてdata を使用する。data が空の場合、request のペイロードが使用されます。

get()、post()、deleteResource()、observe()、discover()も参照

QCoapReply *QCoapClient::put(const QCoapRequest &request, QIODevice *device)

これはオーバーロードされた関数である。

PUT メソッドを使用してrequest を送信し、新しい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()も参照

[signal] 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)

RFC 7252 - セクション4.2で定義されているACK_TIMEOUT の値をミリ秒単位でackTimeout に設定する。デフォルトは2000ミリ秒。

このタイムアウトは確認可能なメッセージにのみ適用される。信頼性のある送信の実際のタイムアウトは、ACK_TIMEOUTACK_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)

responseDelayMAX_SERVER_RESPONSE_DELAY の値をミリ秒単位で設定する。デフォルトは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 ソケットoptionvalue に設定する。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.