私は C# の初心者ですが、複数の CoAP サーバーのスループットと応答時間を一度にテストする CoAP クライアントをコーディングしています。参考までに、このアプリケーションはコマンド ライン プログラムとして実装されています。私が使用しているライブラリは CoAP.NET です。
デフォルトのブロック サイズを 512 バイトから 32 バイト以下に変更するまでは、すべてうまくいきました。
これは、私の C# の理解がうまくいかないところです。設定はインターフェイス ICoapConfig とクラス CoapConfig にあります。これらの設定は、ある時点で魔法のように読み込まれます。
私はこれをやろうとしました:
CoapConfig conf = new CoapConfig();
conf.DefaultBlockSize = 32;
CoapClient client = new CoapClient(conf);
...
Request req = new Request(Method.PUT);
req.SetPayload(payload, MediaType.TextPlain);
client.Send(req);
ただし、メッセージは 512b を超える場合にのみブロック単位で転送されるため、ブロックサイズは 512 のままです。
DEBUG - BlockwiseLayer uses MaxMessageSize: 1024 and DefaultBlockSize:512
これは、プログラムを実行したときに得られる出力の最初の行です。
どんな助けでも幸せです:)
解決:
CoapConfig conf = new CoapConfig();
conf.DefaultBlockSize = 32;
...
Request req = new Request(Method.PUT);
req.SetPayload(payload, MediaType.TextPlain);
req.URI = client.Uri;
IEndPoint _clientEndpoint;
_clientEndpoint = new CoAPEndPoint(conf);
_clientEndpoint.Start();
req.Send(_clientEndpoint);
...
この EndPoint が何であるかはよくわかりませんが、これにより、送信時に目的の構成を使用できます。参考までに、サーバーの構成を に設定しようとしましたが、成功しませんでした。