首页
学习
活动
专区
圈层
工具
发布
50 篇文章
1
C语言中如何实现数据帧封装与解析
2
【熟视C语言】如何快速的了解一个库函数(C语言讲解,以string.h中的部分库函数为例)
3
C语言代码封装MQTT协议报文,了解MQTT协议通信过程
4
NV12数据格式转H265编码格式实现过程
5
基于Modbus协议实现Openplc与Kingview的仿真通讯与模拟测试
6
onvif协议最新版本_接口协议测试工具
7
linux后台开发常用调试工具
8
C/C++开发人员要了解的几大著名C/C++开源库[通俗易懂]
9
适用于嵌入式环境的加速计算库
10
Linux下WebRTC框架Janus编译过程
11
探索嵌入式应用框架(EAF)
12
[C&C++]联合体union的特征及用其进行传输
13
联合体和结构体一起解析数据
14
国标GB28181协议客户端开发(四)实时视频数据传输
15
6.1 C/C++ 封装字符串操作
17
C语言进阶——自定义类型
18
干货 | 结构体、联合体嵌套使用的一些实用操作
19
C语言的面向对象编程
20
QT应用编程: 编写低功耗BLE蓝牙调试助手(Android系统APP)
21
设计模式之接口隔离原则C++实现
22
嵌入式软件开发的框架思维
23
通过面向对象设计串口协议
24
QT应用编程: 开发串口调试助手
25
一种高效的串口自定义16进制通信协议的嵌入式应用开发解决方案
26
嵌入式中状态机的几种骚操作
27
【干货】用FreeRTOS搭建Event-Driven应用框架
28
嵌入式开发基础之任务管理(线程管理)
29
SIP菜鸟如何学SIP
30
Linux下使用libuvc读取控制USB免驱摄像头
31
Linux 使用strace命令查找进程卡死原因
32
84-OOP之组合
33
如何调试多线程程序
34
GDB多线程调试分析
35
GDB多线程多进程调试
36
一个简单实用的线程基类
37
OpenThread是世界上最舒心的跨平台多线程并发库
38
OpenMiniServer是一个超迷你、 超易用的C++高并发跨平台服务器框架
39
OpenSocket是跨全平台的高性能高并发网络库
40
一个C++多线程TCP服务Demo
41
一文搞懂网络库的分层设计!
42
实现一个接收多路RTP流,输出一路RTMP流的简单MCU
43
谈谈嵌入式应用软件人机界面开发的菜单框架编写
44
union 的概念及在嵌入式编程中的应用
45
让终端支持https,移植OpenSSL和libcurl到嵌入式linux,遇到的问题总结
46
日常工作中的设计:解耦和封装
47
一种简易的嵌入式设备系统日志记录方法
48
PLC和计算机通信的数据采集方法和传输监控的实现(1)
49
C++随笔(五)三种实现串口通信的方式
50
开源一个自己写过的MQTT 客户端调试工具

开源一个自己写过的MQTT 客户端调试工具

对于有需要使用MQTT功能或产品,调试工具就是必不可用的。

最常见的工具应该就是MQTT.fx吧。毕竟各大云平吧也是以此为参考。

MQTT.fx的工具的好又强在此也不作介绍了。

有时候我们开发或者MQTT,并不会用太多的功能,或者能支持十六进制发送和接收。也曾在网上找过几款MQTT工具,也都没能让自己满意,于是自己就写了一个MQTT客户端工具。现开源出来。主要是最近才学会使用git。以前主要是开发裸机程序,内核等,很少用到git。

https://github.com/xidongliang/mqtt_client/

先看一下这个工具界面,由于工具是使用VS自带的MFC写的,界面风格略丑一些。是使用VS2013版本开发的。

所以调试就在一个页面里。服务器默认填写了自己的测试服务器,搭建了MQTT服务功能。搭建的测试MQTT服务器因为不需要密码验证,就随便填写了。设备ID每次运行工具都会是一个随机数。这样自己就不会使用到相同的ID登记了。

订阅和发布直接就在一个页面里,省的来回切换了。

更主要的是,可以支持HEX格式的数据发送和接收。

有时候自己调试MQTT,可能需要测试订阅的数据包,但是又不想一直看着这个工具,就想到自己写一个功能,可以自动保存到当半目录下。方便自己回看或者数据整理。

什么时间收到什么主题的多少个字节的数据。就一一记录下来了。

当然,如果有发送测试要求的,比如一直发送,多少间隔发送这种测试需求的,也可以直接修改代码,重新编译。

自己有什么需求,就可以自己实现了。MQTT.fx有个脚本功能,这个功能还是比较强大的,也不和MQTT.fx作比较了。

这个工具还支持TLS通信。不过比较简单。

就是在工具的当前目录下,创建一个cer目录,在这个目录下放证书文件即可。

目前该版本是判断了三个文件要存在。如果你只需要两个文件,可能 需要改一下代码。

此外, 该工具附加了一个数据压缩和解压的功能。

因为有一些场合中,为了提高效率,可能会需要将数据压缩之后再发送。

对方收到压缩到的数据再进行解压。

该工具使用的mqtt是libemqtt的库。

如果你也使用过libemqtt,不知道现在的库版本优化过了没有。此前libemqtt里定义的设备ID,用户名和密码,字节数太少。遇到用户名和密码,设备ID稍微长一些,就登录异常了。当然,此工具已经改了这个。

https://github.com/xidongliang/mqtt_client/

笔者主要是在linux 开发比较多,特别是arm linux的嵌入式开发。。最近也慢慢接触github,后续也会陆续将以前写过的一些程序进行开源出来,用于学习和交流。

举报
领券