前言

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

说明:

表示后端响应请求的代理服务器地址的绝对地址

-proxyscheme

用于重新组装后端服务器的地址,该值仅替换协议头部分。如果-proxyscheme https ,那么请求地址coap://127.0.0.1/core/time 就会变换为https://127.0.0.1/core/time

CoAP调试工具Mozi.IoT.CoAP应用详解的更多相关文章

  1. CoAP调试工具 Mozi.IoT.CoAP

    前言 CoAP是一种类HTTP协议的物联网专用协议,其数据包为人类不可阅读的字节流形式,在开发相关应用的时候往往不能准确的了解数据包的内容.故需要专用的调试工具对数据和通讯进行调试. CoAP协议介绍 ...

  2. 前端开发调试工具控制台之console命令详解

    控制台(Console)是Firebug的第一个面板,也是最重要的面板,主要作用是显示网页加载过程中产生各类信息. 一.显示信息的命令 Firebug内置一个console对象,提供5种方法,用来显示 ...

  3. COAP协议 - arduino ESP32 M2M(端对端)通讯与代码详解

    前言 最近我在研究 COAP 协议,在尝试使用 COAP 协议找了到了一个能在ESP32上用的coap-simple库,虽然库并不完善关于loop处理的部分应该是没写完,但是对于第一次接触COAP的朋 ...

  4. js调试工具Console命令详解

    这篇文章主要介绍了js调试工具Console命令详解,需要的朋友可以参考下   一.显示信息的命令 复制代码 代码如下: < !DOCTYPE html> < html> &l ...

  5. IDEA中 Debug 调试工具(图文详解)

    DEBUG调试工具 一. Debug 调试工具 1. Debug的作用 2. Debug的使用步骤 3. IDEA中Debug按钮详解 总结 参考博文:https://blog.csdn.net/qq ...

  6. [转]keil使用详解

    第一节 系统概述 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上.结构性.可读性.可维护性上有明显的优势,因而易学易用.用过 ...

  7. KeilC51使用详解 (一)

    第一节 系统概述 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上.结构性.可读性.可维护性上有明显的优势,因而易学易用.用过 ...

  8. ORACLE PL/SQL编程详解

    ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设 ...

  9. http协议详解<一>

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://7826443.blog.51cto.com/7816443/1729227 写在 ...

随机推荐

  1. 《前端运维》五、k8s--3灰度发布、滚动更新与探针

    一.灰度发布 灰度发布是一种发布方式,也叫金丝雀发布,起源是矿工在下井之前会先放一只金丝雀到井里,如果金丝雀不叫了,就代表瓦斯浓度高.原因是金丝雀对瓦斯气体很敏感.灰度发布的做法是:会在现存旧应用的基 ...

  2. 如何在网上找java包

    如图所示 在java api后面输入你要找包的名称就可以了

  3. 你将如何使用 thread dump?你将如何分析 Thread dump?

    新建状态(New) 用 new 语句创建的线程处于新建状态,此时它和其他 Java 对象一样,仅仅在堆区 中被分配了内存. 就绪状态(Runnable) 当一个线程对象创建后,其他线程调用它的 sta ...

  4. 学习saltstack (五)

    Saltstack介绍 Salt三种运行方式 1.local本地运行2.Master/Minion3.Salt ssh Salt的三大功能 a.远程执行b.配置管理(状态管理)c.云管理:阿里云,aw ...

  5. github 编写README时常用的写法

    参考:https://github.com/HeTingwei/ReadmeLearn#%E7%BC%96%E5%86%99readme%E6%97%B6%E5%B8%B8%E7%94%A8%E7%9 ...

  6. Pandas基础笔记

    Basic knowledge of Pandas pandas库是以numpy库为基础建成的,是python数据分析的核心库.也正因如此,pandas内的数据结构与numpy的数组有许多相似的地方. ...

  7. weevely使用小结

    Weevely 写在前面 由于比赛不确定会不会提供菜刀或者蚁剑,这里我稍微对weevely进行简单介绍一下,具体还是请看官方文档,官方文档讲的很详细(前提你英语嘚不错) 官方文档:https://gi ...

  8. 串联型PID,并联型PID与标准型PID简要说明

    PID广泛应用于工业生产各个环节,然而对于不同PID结构会有一些差异,导致在调参时若按照常规的经验调试,结果将会有非常大的不同. 串联型PID(Serial PID) 串联型PID的三个环节由比例,积 ...

  9. Kurento安装与入门08——Group Call

    Group Call 本示例展示了一个视频聊天室的功能,不同的聊天室之间互相隔离. 官网文档 Group Call 首先从github上获取代码(如果已经获取可以跳过,获取的代码已经包括后面的示例代码 ...

  10. 微信小程序wx.login()获取openid,附:前端+后端代码

    微信小程序开放了微信登录的api,无论是个人还是企业申请的小程序均可使用. 首先创建一个项目,把这些代码都清空,我们自己写! 然后,开始写了!首先index.wxml,写一个button用于发起登录 ...