最近实验室的项目是要求在linux下使用C语言编程实现MQTT的通信。通信的内容是发布端(publish)发布从实验室树莓派获取的时间和温度,订阅端(suscribe)获取时间和温度。
通过这几天的百度搜索总结了以下经验:
MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件 。MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。
它的基本模型如下:
MQTT控制报文的结构基本由三部分组成:固定报头(Fixed header),可变报头(Variable header),有效载荷(Payload)。
控制报文的类型如下图所示:
网络连接 Network Connection
MQTT使用的底层