-1

我需要你的帮助来提取 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。希望我这次很清楚。

4

1 回答 1

2

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

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

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

于 2012-11-25T17:31:38.003 回答