提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
前言
Mosquitto库是一个开源的消息代理项目,用于实现MQTT(Message Queuing Telemetry Transport)协议。MQTT是一种轻量级的通信协议,适用于低带宽、高延迟或不稳定网络环境下的物联网设备通信。Mosquitto库提供了MQTT协议的服务器和客户端实现,可以用于构建物联网应用和设备之间的通信。Mosquitto库支持多种平台和编程语言,并提供了丰富的功能和灵活的配置选项。
一、创建阿里云产品
如何创建产品的详细过程可查看我上篇文章介绍,链接如下:
http://t.csdnimg.cn/M61SI
二、下载mosquitto库
1.下载源码
wget http://mosquitto.org/files/source/mosquitto-1.6.10.tar.gz
2.解压源码
tar -zxvf mosquitto-1.6.10.tar.gz
3.进入源码目录,编译下载安装
cd mosquitto-1.6.10/
make
sudo make install
三、连接阿里云
主要用到的API如下:
1.MQTT初始化
int mosquitto_lib_init(void)
功能:
使用mosquitto库函数前,要先初始化,使用之后就要清除。清除函数;int mosquitto_lib_cleanup()
返回值:MOSQ_ERR_SUCCESS
2.MQTT清除
int mosquitto_lib_cleanup(void)
功能:
使用MQTT之后,清除工作
返回值MOSQ_ERR_SUCCESS
3.新建客户端
struct mosquitto *mosquitto_new(const char * id, bool clean_session, void * obj)
参数
id:如果为NULL,将生成一个随机客户端ID。如果id为NULL,clean_session必须为true。
clean_session:设置为true以指示代理在断开连接时清除所有消息和订阅,设置为false以指示其保留它们,客户端将永远不会在断开连接时丢弃自己的传出消息就是断开后是否保留订阅信息true/false
obj:用户指针,将作为参数传递给指定的任何回调
返回
成功时返回结构mosquitto的指针,失败时返回NULL,询问errno以确定失败的原因:ENOMEM内存不足。EINVAL输入参数无效。
4.释放客户端
void mosquitto_destroy(struct mosquitto * mosq)
功能
释放客户端
参数:mosq: struct mosquitto指针