-
mqtt物联网数据传输协议
引用github的资源https://mcxiaoke.gitbooks.io/mqtt-cn/Introduction3.2 CONNACK一确认连接请求o3.3 PUBLISH-发布消息o34 PUBACK一发布确认o35 PUBREC-发布收到(QoS2,第一步)°36 PUBREL-发布释放(QoS2,第二步)°3.7P∪ BCOME一发布完成(QoS2,第三步)o3.8 SUBSCR|BE-订阅主题o39S∪BACK-订闶确认o3.10 UNSUBSCR|BE-取消订阅3.11 UNSUBACK-取消订阔确认3.12P| NGREG一心跳请求3.13 PINGRESE一心跳响应o3.14D| SCONNECT一断开连接第四章一操作行为第五章一安全第六章一使用 Websocket第七章一一致性目标附录B-强制性规范声明旧版文档已过期,建议使用 GifTbook版本最新版本:V1.0.12015.10.22文档连接中文版HTMLMQTT3.1.1中文版中文版PDFMQTT3.1.1中文版英文版HTMLMQTT Version 3.1.1英文版PDFMQTT∨ ersion3.1.1许可协议署名-非商业性位用-相同方式共享4.0国际联系方式IntroductionBloghttp://blog.mcxiaoke.comGithub:https://github.com/mcxiaoke.Email:github@mcxiaoke.com开源项目·Rx文档中文翻译:htts:/! github. com/mcxiaoke/ RXDOCS·MQTT协议中文版:htps:/ github. com/ mcxiaoke/mgttAwesome-kotlin:httpsgithub.com/mcxiaokelawesome-kotlin.Kotlin-koi:https:/github.com/mcxiaoke/kotlin-koiNeXt公共组件库:htps!/github.com/xiaoke/Android-Next· PackerNg极速打包:htts;/ github. com/mcxiaoke/ packer- ng-pluginGradle渠道打包https://github.com/mcxiaoke/gradle-packer-plugin·VentuS实现xBus:htps;/github.com/miaoke/BuS磨菇饭App:htps:! github. com/mcxiaoke/minicat·饭否客户端:https:/github.com/mcxiaoke/anfouapp-opensourceVolleyt:https://github.com/mcxiaoke/android-volley第一章-MQTT介绍第一章概逃 Introduction1.1MQTT协议的组织结构 Organization of MQTT本规范分为七个章节:第一章一介绍第二章一MQTT控制报文格式第三章一MQTT控制报文·第四章一操作行为第五章一安全第六章一使用 Websocket第七章一一致性日标附录B一强制性规范声明12术语 Terminology本规范中用到的夭键字必须MUST,不能 MUST NOT,要求 REQUIRED,将会 SHALL,不会 SHALL NOT,应该 SHOULD,不应该 SHOULD NOT,推荐 RECOMMENDED,可以MAY,可选 OPTIONAL都是按照 TE RFC2119[RFC2119]中的描迹解释。网络连接 Network ConnectionMQTT使用的底层传输协议基础设施。客户端使用它连接服务端。它提供有序的丶可靠的丶双向字节流传输。例子见42节应用消息App| ication Message MQT协议通过网络传输应用数据。应用消息通过MQT传输时’它们有关联的服务质量(QoS)和主题( Topic)客户粥C|ient使用MQπT的程序或设备。客户端总是通过网络连接到服务端。它可以发布应用消息给其它相关的客户端。●订阅以请求接受相关的应用消息。·取消订阅以移除接受应用消息的请求从服务端断开连接第一章-MQTT介绍服务端 Server个程序或设备,作为发送消息的客户端和请求订阅的客户端之间的中介σ服务端接受来自客户端的网络连接。接受客户端发布的应用消息。·处理客户端的订阅和取消订阅请求。转发应用消息给符合条件的已订阅客户端订 Subscription订阔包含一个主题过滤器( Topic Filter)和一个最大的服务质量(QoS)等级。订阅与单个会话( Session)关联。会话可以包含多于一个的订阅。会话的每个订阅都有一个不同的主题过主题名 Topic Name附加在应用消息上的一个标签’服务端巳知且与订阔匹配。服务端发送应用消息的一个副本给每一个匹配的容户端订阅。主题过滤器 Topic Filter订阅中包含的一个表达式,用于表示相关的一个或多个主题。主题过滤器可以使用通配符。会话 Session客户端和服务端之间的状态交互。一些会话持续时长与网络连接一样·另一些可以在客户端和服务端的多个连续网络连接间扩展。控制报文 MQTT Contro| Packet通过网络连接发送的信息数据包。MQTT规范定义了十四种不同类型的控制报文,其中一个( PUBLISH报文)用于传输应用消息。1.5数据表示 Data representations1.51二进制位Bits字节中的位从0到7。第7位是最高有效位’第0位是最低有效位。1.52整数数值 Integer data values整数数值是16位’使用大湍序( big-endian,高位字节在低位字节前面)。这意味着一个16位的字在网络上表示为最高有效字节(MSB),后面跟着最低有效字节(LSB)1.53UTF8编码字符串UTF8 encoded strings后面会描逑的控制报文中的文本字段编码为UTF8格式的字符串。UTF8[RFC3629]是一个高效的υ ncode字符编码格式’为了攴持基于文本的通信’它对ASC∏字符的编码做了优化第一章-MQTT介绍每一个字符串都有一个两字节的长度字段作为前缀,它给出这个字符串UTF8编码的字节数,它门在图例1.1UTF8编码字符串的结构中描述。因此可以传送的UTF-8编码的字符串大小有个限制,不能超过65535字节除非另有说明’所有的UTF-8编码字符串的长度都必须在0到65535字节这个范围内。图例1.1UTF8编码字符串的结构 Structure of ute8 encoded strings进制位7-0yte字符串长度的最高有效字节(MsB)byte 2字符串长度的最低有效字节(LSB)byte 3如果长度大于0,这里是UTF-8编码的字符数据。UTF-8编码字符串中的字符数据必须是按照 Unicode规范[ Unicode]定义的和在RFC3629[RFC3629]中重申的有效的UTF8格式。特別需要指出的是,这些数据不能包含字符码在U+D800和U+DFFF之间的数据。如果服务端或客户端收到了一个包含无效UTF-8字符的控制报文”它必须关闭网络连接[MQTT1.53-]。UTF-8编码的字符串不能包含空字符U+0000如果客户端或服务端收到了一个包含U+0000的控制报文’它必须关闭网络连接MQTT-1.53-2]数据中不应该包含下面这些 Unicode代码点的编码。如果一个接收者(服务端或客户端)收到了包含下列任意字符的控制报文,它可以关闭网络连接U+0001和U+00F之间的控制字符∪+007F和∪+009F之问的控制字符Unicode规范定义的非宇符代码点(例如U+ OFFFF)Unicode规范定义的保留字符(例如U+ OFFFF)UTF-8编码序列0XEF0xBB0XBF总是被解释为U+FEFF(零宽度非换行空白字符)’无论它出现在字符串的什么位置’报文接收者都不能跳过或者剥离它[MQTT-153-3]。非规范示例 Non normative example例如,字符串A是一个拉丁字母A后面跟着一个代码点U+2A6D4(它表示一个中日韩统表意文字扩展B中的字符)这个字符串编码如下图例12UTF8编码字符串非规范示例UTF-8 encoded string non normative example第一章-MQTT介绍Bit54byte 1字符串长度MSB(0x0O)00byte 2字符串长度LSB(0×05)byte 3A(0×41)00000bye4(0×F0)000byte 5(OXAA)00byte 6(0×9B)0byte 7(0×94)0001.6编辑约定 Editing conventions本规范用黃色高亮的文本标识一致性声明·毎个一致性声明都分配了一个这种袼式的引用:[MQTT××x-y]项目主页MQTT协议中文版第二章一MQTT控制报文格式第二章MQTT控制报文格式 MQTT ControPacket format目录第一章-个绍第二章一MQTT控制报文格式第三章一MQTT控制报文·第四章一操作行为第五章一安全第六章一使用 Websocket第七章一一致性目标附录B-强制性规范声明2.1MQTT控制报文的结构 Structure of an MQTTControl packetMQπT协议通过交換预定义的MQTT控制报文来通信。这一节描逃这些报文的格式。MQTT控制报文由三部分组成’按照图例2.1-MQ∏控制报文的结构描逃的顺序图例21-MQTT控制报文的结构Fixed header固定报头’所有控制报文都包含Variable header可变报头·部分控制报文包含Payload有效载荷·部分控制报文包含22固定报头 Fixed header每个MQTT控制报文都包含一个固定报头。图例2.2-因定报头的格式描逑了因定报头的格式图例22-固定报头的格式第二章一MQTT控制报文格式Bit65432byte 1MQTT控制报文的类型用于指定控制报文类型的标志位byte 2剩余长度221MQTT控制报文的类型 MQTT Control Packet type位置:第1个字节,二进制位7-4表示为4位无符号值,这些值的定义见表格2.1-控制报文的类型表格2.1-控制报文的类型名字值报文流动方向描述Reserved禁止保留CONNECT客户端到服务端客户端请求连接服务端CONNACK2服务端到客户端连接报文确认PUBLISH两个方向都允许发布消息PUBACK丙个方向都允许QoS1消息发布收到确认PUBREC5两个方向都允许发布收到(保证交付第一步)PUBREL两个方向都允许发布释放(保证交付第二步PUBCOMP7两个方向都允许QoS2消息发布完成(保证交互第三步)SUBSCRIBE8客户端到服务端客户端订阅请求SUBACK9服务端到户风请求摄文确认UNSUBSCRIBE10客户端到服务端客户端取消订阋请求UNSUBACK服务端到客戶端取消订阔报文确认PINGREQ12客户端到服务端跳请求PINGRESP13服务端到客户端心跳响应DISCON№ECT14客户端到服务端客户端断开连接Reserved15禁止保留222标志Fags固定报头第1个字节的剩余的4位[30]包含每个MQTT控制报文类型特定的标志,见表格22-标志位。表格2.2中任何标记为“保留”的标志位·都是保留给以后使用的·必须设置为表柊中出的值[MQT「-22.2-1。如果收到非法的标志’接收者必须关闭网络连接。有美错误处理的详细信息见4.8节MQTT2222]
- 2021-05-06下载
- 积分:1
-
开源的SSL加密实现程序源代码.tar
【实例简介】开源的SSL加密实现程序源代码
OpenSSL
- 2021-12-04 00:36:21下载
- 积分:1
-
LBM fluid D2Q9 D3Q19
含有LBM的多种模型,有D2Q9, D3Q19,做LBM不可多得的代码。
- 2020-06-24下载
- 积分:1
-
计算机图形学,立方体纹理映射
立方体纹理映射,不同图片,可以旋转,有源代码,压缩文件
- 2021-05-06下载
- 积分:1
-
数字音频规范与程序设计:基于Visual C++开发_CD_源代码
这里只有书的源代码,有很多关于音频开发的很实用的例子,书的相关信息如下:数字音频规范与程序设计作者:曹强页数:472装帧:平装出版社:中国水利水电出版社出版时间:2012-6-1定价:58.00元ISBN:9787508498195副标题:基于Visual C++开发原作名:曹强作品目录前言第一章 Windows音频体系与VC++开发基础1.1 认识声音与音频1.2 Windows音频体系层次结构1.2.1 用户模式与内核模式1.2.2 关于声音的延迟问题及解决方法1.3 VC++开发基础1.3.1 区分C、C++和VC++三者的关系1.3
- 2020-12-05下载
- 积分:1
-
VC++ OpenGL三维物体建模--雨伞的绘制(含详细注释)
Visual C++ OpenGL应用程序开发第五章源码和详细注释。包含三维物体建模雨伞的绘制,显示列表的使用。坐标系的变换。
- 2020-12-02下载
- 积分:1
-
mbus测试软件
mbus表计的测试工具,可针对进口热表、国产热表进行测试。
- 2021-05-06下载
- 积分:1
-
xilinx_CORDIC算法(非常经典)
FPGA有关的cordic讲解,xilinx公司ppt型的详细讲解,中文。从原理到实现(模型的建立等)。简介目前的具有许多乘法器和加法器。然而各种各样的通信技术和矩阵算法则需要三角函数、平方根等的运算如何在上执行这些运算可以使用查找表或是迭代法本节介绍了算法这是一个移位相加算法允许计算不同的三角函数例如0.0.0包括除法和对数酾数在内的其它函数。xⅫNX关于算法的细节问题,可参见下面的材料技术并不是什么新鲜的东西。事实上它可以追溯到年由发表的一篇文章。在上个世纪五十年代,在大型实际的计算机中的实行移位相加受到了当时技术上的限制,所以使用变得非常必要。到了七十年代,和其他公司出产了手持计算器,许多计算器使用一个内部单元来计算所有的三角函数(了解这件事的人们一定还记得,那时求一个角度的正切值需要延迟大约1秒中)二十世纪八十年代,随着高速度乘法器与带有大存储量的通用处理器的出现, CORDIC算法变得无关紧要了。然而在二十一世纪的今天,对于来说,定是在应用中(诸如多输入多输出(波束形成以及其他自适应系统)计算三角函数的备选技术。wwwsteepestascenCO1笛卡尔坐标平面旋转在坐标平面上将点(,)旋转0角度到点(,)的标准方法如下所示00这被称为是平面旋转、向量旋转或者线性矩阵代数中的旋转。xⅫNX上面的方程组同样可写成矩阵向量形式00例如一个相移为wwwsteepestascenCO1伪旋转通过提出因数,方程可写成下面的形式000(0)如果去除0项,我们得到伪旋转方程式0)6(0)即旋转的角度是正确的,但是与的值增加9倍由于所以模值变大。注意我们并不能通过适当的数学方法去除0项然而随后我们发现去除θ项可以简化坐标平面旋转的计算操作。xⅫNX在坐标平面中0因此经过伪旋转之后,向量的模值将增加0倍。向量旋转了正确的角度但模值出现错误。wwwsteepestascenCO1方法方法的核心是伪旋转角度θ,其中θ。故方程为下面的表格指出用于算法中每个迭代的旋转角度精确到位小数xⅫNX在这里,我们把变换改成了迭代算法。我们烀各种可能的旋转角度加以限制,使得对任意角度θ的旋转能够通过一系列连续小角度的旋转迭代来完成。旋转角度遵循法则:0,遵循这样的法则,乘以正切项变成了移位操作。前几次迭代的形式为第次迭代旋转第次迭代旋转第次迭代旋转等很显然,每次旋转的方向都影响到最终要旋转的累积角度。在≤日的范围内的任意角度都可以旋转。满足法则的所有角度的总和0为。对于该范围之外的角度,可使用三角恒等式转化成该范围内的角度。当然,角分辨率的数据位数与最终的精度有关。。因此,在次旋转以后,为了标定伪旋转的幅度,要求乘以一个系数角分辨率的数据位数对最终的旋转精度非常关键。wwwsteepestascenCO1
- 2020-11-29下载
- 积分:1
-
高仿百度地图APP
该APP是一款高仿百度地图的APP,它具有基本地图功能,定位功能,全景显示功能,语音播报导航功能等功能,并且整体的地图的界面都是仿照现在百度地图的APP来设计的。
- 2020-12-11下载
- 积分:1
-
武汉大学数字图像处理实习资料
武汉大学遥感信息工程学院数字图像处理实习资料,值得下载
- 2020-11-30下载
- 积分:1