我是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可能是什么,但这可以让你在发送时使用所需的配置。 仅供参考:我尝试将服务器的配置设置为但没有成功。
答案 0 :(得分:0)
您可以在github上查看CoAP.NET的所有源代码。
我对这个库并不熟悉,但从快速回顾一下,DefaultBlockSize
配置属性看起来只有CoapServer
引用(不是CoapClient
)。
BlockTransferTest fixture中有进一步的证据,它在line 43上为CoapServer
配置了特定的块大小。
您也可以检查同一测试类的line 161。您似乎也可以为端点提供配置设置。