【问题标题】:Coap.Net Custom SettingsCoap.Net 自定义设置
【发布时间】:2015-03-26 18:50:13
【问题描述】:

我是 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);

但是块大小仍然是 512,因为消息只有在超过 512b 时才会按块传输。

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 可能是什么,但这让您在发送时可以使用所需的配置。 仅供参考:我尝试将服务器的配置设置为但没有成功。

【问题讨论】:

  • 问得好。
  • 谢谢!尽力了:)

标签: c# coap


【解决方案1】:

您可以在 github 上查看 CoAP.NET 的所有源代码。

我不熟悉这个库,但从快速回顾来看,DefaultBlockSize 配置属性似乎只被CoapServer 引用(而不是CoapClient)。

进一步的证据在 BlockTransferTest 夹具中,它在 line 43 上配置具有特定块大小的 CoapServer

您还可以检查同一测试类的line 161。看来您也可以为端点提供配置设置。

【讨论】:

  • 好吧,我解决了!感谢 CoAP.Test 库的提示:D
猜你喜欢
  • 1970-01-01
  • 2015-05-01
  • 2015-05-19
  • 1970-01-01
  • 1970-01-01
  • 2014-03-22
  • 2012-11-22
  • 2013-08-20
  • 1970-01-01
相关资源
最近更新 更多