前言
CoAP是一種類HTTP協定的物聯網專用協定,其資料包為人類不可閱讀的位元組流形式,在開發相關應用的時候往往不能準确的了解資料包的内容。故需要專用的調試工具對資料和通訊進行調試。這篇文章是為了讓開發者更好的了解工具的特性。
CoAP協定介紹
CoAP(Constrained Application Protocol)受限應用協定,是一種在物聯網世界的類web協定,RFC規範定義為RFC7252,7959,8613,8974。該協定使用在資源受限的物聯網裝置上。物聯網裝置的RAM,ROM都通常非常小,不能運作消耗資源比較多的TCP和HTTP。
CoAP調試工具
工具名稱:Mozi.IoT.CoAP
下載下傳位址:Mozi.Network 發行版 - Gitee.com
調試位址:coap://coap.me
調試環境:.Net4
指令行參數說明
用法:coap command url [options] [body]
command 可選值:get | post | put | delete
url 格式
coap://{host}[:{port}]/{path}[?{query}]
options 請求選項參數如下:
-time 監聽若幹秒,參數值為整數,機關為秒
-dump 值為檔案路徑,将編碼好的資料包轉儲到檔案,不發起請求
-file 需要上傳的檔案的路徑
-round 重複發起請求的次數(最高100次),需-time參數進行配合
-type 消息類型,取值
con --Confirmable
non --NonConfirmable
ack --Acknowledgement
rst --Reset
-token 格式:0x0f0e
-ifmatch
-etag
-ifnonematch
-extendedtokenlength
-locationpath
-contentformat
-maxage
-accept
-locationquery
-block2 Block2設定,格式:Num/MoreFlag/Size
-block1 Block1設定,格式:Num/MoreFlag/Size
Num:0~1045785,MoreFlag:[0|1],Size:0~1024
-size2
-proxyuri
-proxyscheme
-size1
注:
1.字元串變量值用""包裹
2.整型變量值用,直接輸入整數即可,如 -size 1024
body 說明:
1.0x開始的字元串被識别為HEX字元串并被轉為位元組流
2.其它識别為普通字元串同時被編碼成位元組流,編碼方式為UTF-8
3.帶空格的字元串請用""進行包裹"
示例:
coap get coap://127.0.0.1:5683/core/time?type=1 -block1 0/0/128
指令解釋
-time
值類型:整數
說明:
此指令訓示程式持續監聽若幹秒,無論服務端是否有響應,程式都不會退出。預設情況下,程式在發起請求時會阻塞30s,直到收到一次服務端響應或逾時就會立即結束運作。有時候伺服器不會僅僅發送一次響應,而是将包進行分塊發送,或伺服器響應不時很及時。這兩種情況下就需要控制監聽的時間。
-dump
值類型:字元串
說明:
此指令會将請求包以HEX字元串的形式,導出到指定的檔案,同時不會發起與伺服器的通訊請求。
-file
值類型:字元串
說明:
設定上傳的檔案的完整路徑,檔案會按預設的分塊大小進行傳輸(預設128bit)
-round
值類型:整數
說明:
設定重複發起請求的次數,為防止工具被用作攻擊工具,上限設定為100次
-type
值類型:枚舉
說明:
消息的類型,取值範圍如下(忽略大小寫):
Confirmable | CON
NonConfirmable | NON
Acknowledgement | ACK
Reset | RST
-token
值類型:二進制
說明:
請使用HEX字元串的格式設定此值,如0x0f0e
-ifmatch
值類型:字元串
說明:
請參考HTTP通訊中的if-match
-etag
值類型:字元串
說明:
請參考HTTP通訊中的etag
-ifnonematch
值類型:字元串
說明:
請參考HTTP通訊中的if-none-match
-extendedtokenlength
值類型:字元串
說明:
這個值暫時不要使用,因為最新的規範文檔還沒有表述的很清楚,待後期實作後會加入
-contentformat
值類型:字元串或數字
說明:
這個參數表示發起的請求内容的格式,用于POST/PUT兩種請求方式。如果不設定此參數,則通訊雙方預設内容格式為為text/plain,且此參數不會附加到資料包中。
取值範圍如下表:
"text/plain" | 0
"application/link-format" | 40
"application/xml" | 41
"application/octet-stream" | 42
"application/exi" | 47
"application/json" | 50
"application/cbor" | 60
-accept
值類型:字元串或數字
說明:
表示用戶端期望伺服器傳回的内容的格式類型,參數取值請參看-contentformat。
-block1|block2
值類型:字元串
說明:
表示期望使用的分塊值,格式為{Num}/{MoreFlag}/{Size}。例如:1/0/1024。
Num:表示目前請求的塊在整個資源中的序号,取值範圍為0-1045785
MoreFlag:表示是否有更多後序包,取值範圍為[0|1]
Size:表示分塊的大小,取值為2**[4-11],可取值為16,32,64,128,256,512,1024,2048
-size2 | -size1
值類型:無符号整型
說明:
表示整個資源的大小,取值範圍為0-2**32,即無符号整型
-proxyuri
值類型:字元串URI
說明: