# client4mqtt
本项目是基于paho.mqtt.c库封装的一个mqtt客户端实现,以类的方式提供,有需要的朋友请直接将ThreadModel.h ThreadModel.cpp Client4MQTT.h Client4MQTT.cpp这4个文件拷贝到自己的项目中。
本项目支持跨平台,可在windows和linux上进行编译,但是需要依赖以下几个库:
- paho.mqtt.c
- pthread-w32
- openssl
以上几个库,paho.mqtt.c是所有平台必需的,pthread-w32只在windows平台需要,openssl是paho.mqtt.c编译ssl版本间接要求的。
### 用法举例:
```
#include <stdio.h>
#include <stdlib.h>
#ifdef __linux__
#include <unistd.h>
#endif
#include "Client4MQTT.h"
dakuang::CClient4MQTT* g_pClient4MQTT = NULL;
// 线程定时器回调
void CB_Timer()
{
printf("@CB_Timer call \n");
// 向MQTT客户端对象发射一个定时器脉冲
g_pClient4MQTT->emitTimerEvent();
}
// 接收消息回调
void CB_MessageArriv(const std::string& strTopic, const std::string& strMessage)
{
printf("@CB_MessageArriv => topic:[%s] message:[%s] \n", strTopic.c_str(), strMessage.c_str());
}
int main(int argc, char* argv[])
{
// 定义MQTT客户端对象
dakuang::CClient4MQTT client4MQTT;
client4MQTT.setClientID("abc123");
client4MQTT.setServerAddress("tcp://127.0.0.1:1883");
client4MQTT.addSubTopic("test");
client4MQTT.setMessageArrivedCB(CB_MessageArriv);
client4MQTT.start();
g_pClient4MQTT = &client4MQTT;
// 定义线程定时器对象
dakuang::CThreadTimer threadTimer;
threadTimer.setTimerCB(CB_Timer);
threadTimer.start(10000);
#ifdef __linux__
sleep(60);
#else
Sleep(60*1000);
#endif
client4MQTT.stop();
threadTimer.stop();
return 0;
}
```
### paho.mqtt.c
下载:https://github.com/eclipse/paho.mqtt.c
编译:<br>
在linux平台直接使用make命令编译。<br>
在windows平台编译,建议使用cmake编译。
### pthread-w32
下载:https://sourceware.org/pthreads-win32
根据需要下载对应的版本,我下载的是pthreads-w32-2-9-1-release.zip。解压文件,得到3个子目录,其中Pre-built.2是已经编译好的头文件和库,库又包括动态库和静态库。我建议使用动态库链接方式,以规避windows运行时不同造成无法链接的问题。
### openssl
下载:https://www.openssl.org/source
linux平台编译:<br>
解压,进入源码目录,运行:<br>
./config --prefix=/usr/local/openssl <br>
make <br>
sudo make install <br>
安装位置: /usr/local/openssl
windows平台,建议下载现成的安装包,地址:http://slproweb.com/products/Win32OpenSSL.html
![avatar](https://profile-avatar.csdnimg.cn/51db315e0c214f5dbc234437d2a45af7_qq_46187594.jpg!1)
好家伙VCC
- 粉丝: 2740
- 资源: 9136
最新资源
- Golang_Puzzlers-春节主题资源
- AndBase-javaEE框架项目资源
- 智慧园区管理系统-活动资源
- XLang-汇编语言资源
- 基于数据预处理与PSO-SVM优化的风功率预测及其聚类分析-一种提高预测准确性的方法,基于数据预处理与PSO-SVM优化的风功率预测及聚类分析-一种提高可再生能源预测准确性的方法,基于数据预处理和
- 风光储系统并网Simulink仿真建模深度分析:从原理到实践的应用研究,风光储系统并网技术:基于Simulink仿真建模的深度分析与研究,风光储系统并网simulink仿真建模分析 ,风光储系统; 并
- 基于自抗扰控制的幅频特性曲线研究:传函推导与PID等效在跟踪和抗扰曲线上的应用分析,基于自抗扰控制的幅频特性曲线研究:PID等效性及其在跟踪和抗扰曲线上的应用分析,自抗扰控制,幅频特性曲线,传函推导
- 小程序商城源码-Java-C语言资源
- 基于FPGA的高效OFDM调制解调技术实现,Verilog代码编写及FFT与IFFT的双重验证:包括详细的testbench操作流程及程序录像,基于FPGA的OFDM调制解调Verilog实现:包含I
- 基于FPGA的256点FFT算法Verilog实现与程序操作指南,包含Testbench及无IP核应用案例的演示录像,基于FPGA实现的256点FFT傅里叶变换算法与Verilog代码优化方案含测试与
- 基于两阶段鲁棒优化的微电网经济调度策略:应对分布式电源与负荷不确定性的高效调度方案,基于分布式电源与负荷不确定性的微电网两阶段鲁棒优化经济调度策略,微电网两阶段鲁棒优化经济调度方法 参考文献:微电网两
- 通过场分布分析光子晶体的色散特性研究,光子晶体色散研究:场分布与光子能量关系解析,通过场分布得到光子晶体的色散 ,场分布; 光子晶体; 色散,光子晶体色散分析:场分布的揭示与应用
- 小程序商城源码-Java-C++资源
- IOTGate-Java资源
- Aestate-Python资源
- nats.swift-Swift资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)