我需要您的帮助来提取coap消息中的查询值。coap消息看起来像

coap://[ff08:90:5001:0:0:0:0:1]:12345/c?a=4


解码的数据包是52 02 00 00 91 63 63 61 3d 34。这里63 61 3d 34是查询部分?a=4。查询后有数据。我已经将缓冲区指针指向63(?),现在我很惊讶地获得了值34(4)。我如何获得价值并提取价值?

coap_h *hdr = (coap_h *)(buf);

buf = (uint8_t *)(hdr + 1);
len = buf[0] & 0xf;
buf += len + 1;


buf最初指向52,然后将buf移到选项字段91并检查长度,然后增加指向63的buf(?)。希望这次我清楚。

最佳答案

我现在没有时间手动分析您的数据包,但是您应该知道,CoAP-12中选项的工作方式已经发生了巨大变化。我已经实现了一些编码和解析选项的功能,您可能会发现它们有用:

https://github.com/darconeous/smcp/blob/master/src/smcp/coap.c

https://github.com/darconeous/smcp/blob/master/src/smcp/coap.h

10-08 04:46