码迷,mamicode.com
首页 > 其他好文 > 详细

Esp8266 Arduino PubSubClient连接阿里云老是返回rc=2错误的解决方案

时间:2020-07-31 14:07:37      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:loading   client   nbsp   style   ima   div   技术   str   这一   

  最近在用Esp8266 Arduino连接阿里云IOT的时候,服务器端老是返回rc=2 的错误!

用了MQTTfx模拟连接阿里云IOT没有问题,但是把同样的ClientID,UserName和Password

用PubSubClient去连接阿里云的时候,就会出现问题.

  所以对MQTTfx的发送过程,和PubSubclient的发送过程进行了抓包,

技术图片

 

可以发现两种方式连接只有第14个字节内容不同,把pubsubclient的源码捞出来,可以看到:

buffer[length++] =((MQTT_KEEPALIVE) & 0xFF);
这个应该是对KEEPALIVE的请求定义,
MQTT_KEEPALIVE 宏定义为0x0F,经过这里计算后这个字节的结果仍为0x0F,而MQTTfx的为0x3C,找出不同后,把这一句的代码直接改为:
 
buffer[length++] =0x3C;// ((MQTT_KEEPALIVE) & 0xFF);
 
然后编译代码,上传到Esp8266,果然很快就连接上阿里云了!
 
遇到相同问题的同学不妨试下!
 

 

Esp8266 Arduino PubSubClient连接阿里云老是返回rc=2错误的解决方案

标签:loading   client   nbsp   style   ima   div   技术   str   这一   

原文地址:https://www.cnblogs.com/yeshuimaowei/p/13409205.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!