Contiki的CoAP Max交易意味着什么?

时间:2018-06-09 06:58:03

标签: rest transactions contiki coap

我没有得到Max事务是指CoAP的客户端还是服务器端。例如,如果COAP_MAX_OPEN_TRANSACTIONS为4.这是否意味着CoAP客户端可以向不同的服务器发送4个并行请求,或者这意味着CoAP服务器可以并行处理最多4个请求。

因为从代码中我看到它从客户端发起阻止请求,这将不允许循环另一个事务。

所以,这里需要澄清。如果客户端可能有多个CoAP交易,那么请提及。谢谢。

2 个答案:

答案 0 :(得分:1)

根据paper dunkels.com/adam/kovatsch11low-power.pdf 第III-F节 CoAP客户端提供使用protothreads实现的阻塞函数调用以发出请求。该线性编程模型还可以隐藏块状传输,因为它在接收到所有数据时首先继续。所以基于此我猜测客户端可以一次生成一个事务并阻塞等待确认(或超时)。

以下是代码参考https://github.com/contiki-os/contiki/blob/master/apps/er-coap/er-coap-engine.c#L370

相反,服务器可以同时响应多个事务,因为有等待响应的事务(来自传感器)并且需要保存状态。这是我对发布的问题的理解。如果我错了,请纠正。

答案 1 :(得分:0)

根据链接:

https://github.com/contiki-os/contiki/blob/bc2e445817aa546c0bb93a9900093ec276005e2a/apps/er-coap/er-coap-conf.h#L51

https://github.com/contiki-ng/contiki-ng/wiki/Documentation:-CoAP#configuration

我想这只是最大数量的可确认请求(尚未收到ACK)同时存储以进行重传。

它用于为这些请求的最大数量保留内存:

https://github.com/contiki-os/contiki/blob/3f4436bac9a9f6da0df188372d4374693eab8a52/apps/er-coap/er-coap-transactions.c#L57

MEMB(transactions_memb, coap_transaction_t, COAP_MAX_OPEN_TRANSACTIONS);