我没有得到Max事务是指CoAP的客户端还是服务器端。例如,如果COAP_MAX_OPEN_TRANSACTIONS为4.这是否意味着CoAP客户端可以向不同的服务器发送4个并行请求,或者这意味着CoAP服务器可以并行处理最多4个请求。
因为从代码中我看到它从客户端发起阻止请求,这将不允许循环另一个事务。
所以,这里需要澄清。如果客户端可能有多个CoAP交易,那么请提及。谢谢。
答案 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-ng/contiki-ng/wiki/Documentation:-CoAP#configuration
我想这只是最大数量的可确认请求(尚未收到ACK)同时存储以进行重传。
它用于为这些请求的最大数量保留内存:
MEMB(transactions_memb, coap_transaction_t, COAP_MAX_OPEN_TRANSACTIONS);