-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を指すbufをインクリメントします。63今回ははっきりしているといいのですが。

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 に答える