当前位置:   article > 正文

关于LIUNX下C++实现MQTT和SSL双向认证的实现_c++ paho.mqtt linux

c++ paho.mqtt linux

前言

      前段时间,笔者发了MQTT系列文章

Liunx下用C语言实现MQTT的接收与发送(上)_星羽空间的博客-CSDN博客Liunx下用C语言实现MQTT的接收与发送https://blog.csdn.net/qq_25662827/article/details/122567741Liunx下用C语言实现MQTT的接收与发送(下)_星羽空间的博客-CSDN博客_c mqtt 发送消息基于paho.mqtt.c实现mqtt,Liunx下用C语言实现。https://blog.csdn.net/qq_25662827/article/details/122621150Liunx下用C++实现MQTT的接收与发送_星羽空间的博客-CSDN博客_c++ mqttLiunx下用C++实现MQTT的接收与发送,基于paho.mqtt.c库https://blog.csdn.net/qq_25662827/article/details/122622498都是基于paho.mqtt.c实现的功能。但是最近,笔者在项目开发中,遇到了一些问题,关于前面自己用C++封装出来的库链接不上别人大厂自己倒腾的MQTT服务器!为了解决问题,笔者倒腾了两个星期!!!但是,还是没能成功。

 于是乎,笔者把目光转向了paho.mqtt.c给的示例程序。


将paho.mqtt.c示例程序改造成C++的库

其实很简单,把.c改成.cpp就好了。

==》

对文件中的地址信息:

  1. #define ADDRESS "tcp://mqtt.eclipse.org:1883"
  2. #define CLIENTID "ExampleClientPub"
  3. #define TOPIC "MQTT Examples"
  4. #define PAYLOAD "Hello World!"
  5. #define QOS 1
  6. #define TIMEOUT 10000L

进行修改,改成大厂的地址和端口号后,单独g++进行了编译测试,运行.......

居然成功了!


MQTT进行SSL双向认证连接

大厂不知道什么时候,居然技术更新了!要求笔者卑微乙方要用SSL双向连接。

笔者按照CSDN各路大神的文章进行了修改,不过比较相中这一篇文章:

使用paho_mqtt_c库实现mqtt的ssl加密通讯_mayue_csdn的博客-CSDN博客_mqtt 启用加密文章目录启用ssl加密不做认证:单向认证:双向认证:版权声明:本文为CSDN博主「根号C」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/qq_38205154/article/details/118726385最近做mqtt加密传输,做此笔记备忘开源库版本:paho.mqtt.c-1.3.6.tar.gz编译:将paho_mqtt_c/CMakeList.txt中:启用SSL编译SET(PAHO_WITHhttps://blog.csdn.net/mayue_web/article/details/121423153在对应的地方把SSL代码加上去就好了。

————————

单独g++进行了编译测试,运行.......

.......

rc:-8

————————

连不上!!!

赶紧尝试用电脑的MQTTX和MQTTfx进行连接测试,都能成功!!!

那一定是笔者的代码问题了,于是乎,笔者开始了漫长的debug的路程。把MQTTAsync.h和MQTTAsync.c源码进行了精读。一个星期后无果。

最终在偶然的一次摸鱼时候,想到了版本问题。笔者之前用的是1.3.0版本的,现在1.3.10了。

结果,换新版本的paho.mqtt.c后,就能连接了。


结语

这个探索历程成本挺高的啊。被甲方催了很多很多次。笔者真能抗压。嚯嚯嚯……

不过也幸好有这将近一个月的经历,笔者对paho.mqtt.c这个库和MQTT协议和MQTT版本关系有了更深层次的理解。相信,笔者对MQTT的debug更上一层楼了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/176514
推荐阅读
相关标签
  

闽ICP备14008679号