Coap.Net自定义设置

时间:2015-03-26 18:50:14

标签: c# coap

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

1 个答案:

答案 0 :(得分:0)

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

我对这个库并不熟悉,但从快速回顾一下,DefaultBlockSize配置属性看起来只有CoapServer引用(不是CoapClient)。

BlockTransferTest fixture中有进一步的证据,它在line 43上为CoapServer配置了特定的块大小。

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