QCoapClient Class
QCoapClientクラスは、アプリケーションがCoAPリクエストを送信し、応答を受信することを可能にします。詳細...
Header: | #include <QCoapClient> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Coap) target_link_libraries(mytarget PRIVATE Qt6::Coap) |
qmake: | QT += coap |
Inherits: | 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も参照のこと 。
メンバー関数ドキュメント
[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"))
これはオーバーロードされた関数である。
与えられたport でgroup に参加したエンドポイントで利用可能なリソースを発見する。レスポンスが到着するたびに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_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 に設定する。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。