目录
概述
本文主要介绍在linux环境(ubuntu)环境下,下载和安装Eclipse Paho C MQTT 软件包,还编写一个范例实现同步发布Message的功能,并使用基于EMQX的服务验证其功能,还是用MQTT.fx订阅消息,已验证发布消息功能的可靠性。
1 同步模式和异步模式
1.1 同步模式
在同步模式下,客户机应用程序在单个线程上运行。使用MQTTClient_publish()和MQTTClient_publishMessage()函数发布消息。要确定QoS1或QoS2(请参阅服务质量)消息已成功交付,应用程必须调用MQTTClient_waitForCompletion()函数。同步发布示例中显示了显示同步发布的示例。在同步模式下接消息使用MQTTClient_receive()函数。客户机应用程序必须相对频繁地调用 MQTTClient_receive()MQTTClient_yield(),以便允许处理确认和MQTT“ping”,从而保持与服务器的网络连接处于活动状态。
总结同步模式应用方法
1)客户机应用程序在单个线程上运行
2)使用MQTTClient_publish()或者MQTTClient_publishMessage()发布消息
3)使用MQTTClient_waitForCompletion()确认消息是否发布成功
4)使用MQTTClient_receive()接收消息
5)必须频繁调用MQTTClient_receive()和MQTTClient_yield(),以确认消息
1.2 异步模式
在异步模式下,客户机应用程序在多个线程上运行。主程序调用客户端库中的函数来发布和订阅,就像同步模式一样。但是,握手和维护网络连接的处理是在后台执行的。使用调用MQTTClient_setCallbacks()(参见MQTTClient_messageArrived()、MQTTClient_connectionLost()和MQTTClient_deliveryComplete())向库注册的回调,向客户端应用程序提供状态通知和消息接收。然而,这个API不是线程安全的——在没有同步的情况下,不可能从多个线程调用它。可以为此使用MQTTAsync API来实现这些功能。
总结异步模式应用方法
1)客户机应用程序在多个线程上运行
2)主程序调用客户端库中的函数来发布和订阅,使用MQTTClient_publish()或者MQTTClient_publishMessage()发布消息;使用MQTTClient_publishMessage订阅消息
3)使用调用MQTTClient_setCallbacks(),向客户端应用程序提供状态通知和消息接收
异步模式的详细使用范例,参看文章:
Linux环境下使用Eclipse Paho C 实现(MQTT Client)异步订阅Message-CSDN博客
Linux环境下使用Eclipse Paho C 实现(MQTT Client)异步方式发布Message-CSDN博客
2 下载和安装paho.mqtt.c
登录mqtt官网,点击Software,可以看见如下页面,选择Eclipse Paho C进入下载页面
https://mqtt.org/
下载paho.mqtt.c
笔者选择使用命令直接安装该软件包,具体操作步骤如下:
Step -1: 下载软件包执行命令:
git clone https://github.com/eclipse/paho.mqtt.c.git
step-2: 进入paho.mqtt.c目录,执行make
cd paho.mqtt.c
make
系统会自动编译代码,等待编译结果。
编译完成后,会自动生成build文件,这时可以安装