1

私は 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 が何であるかはよくわかりませんが、これにより、送信時に目的の構成を使用できます。参考までに、サーバーの構成を に設定しようとしましたが、成功しませんでした。

4

1 に答える 1

0

githubでCoAP.NETのすべてのソース コードを確認できます。

私はこのライブラリに精通していませんが、簡単なレビューから、構成プロパティは(ではなく)DefaultBlockSizeによってのみ参照されているようです。CoapServerCoapClient

さらなる証拠は、43 行目の特定のブロック サイズでを構成するBlockTransferTestフィクスチャにあります。CoapServer

同じテスト クラスの161 行目を確認することもできます。エンドポイントの構成設定も提供できるようです。

于 2015-03-26T19:21:13.367 に答える