我需要您的帮助来提取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