MQTT Paho库是否存在payload大小限制?超600字节数据包异常问询
问题描述
任何超过600字节的payload都会导致数据包格式错误,无法发布。不过MQTTSerialize_publish(对应eclipse paho.mqtt.embedded-c库的MQTTPacket模块)返回的payload字节数是正确的,例如1260字节。
我在代码和MQTT标准中都没有查到明确的payload大小限制。
我的函数调用方式如下:
unsigned char bufm[1500]; int bufmlen = sizeof(bufm); rc = MQTTSerialize_publish(bufm, sizeof(bufm), dup, qos, retained, msgid, topicString[0], message, messageLen);
针对某一payload,控制台输出如下:
messageLen=580 sizeof bufm=1500 rc=600
此时payload(bufm)传输正常。
针对另一个payload的输出如下:
messageLen=638 sizeof bufm=1500 rc=658
此时由于payload超过600字节,bufm仅包含19字节,仅存储了message数组的部分内容,且两次返回的rc值均为正确值。另外我声明的unsigned char bufm[1500];指向的内存空间是充足的。
问题更新
问题已定位:是栈相关问题,指针指向了栈空间,发生了栈溢出。抱歉占用大家时间,感谢各位的帮助。
内容的提问来源于stack exchange,提问作者Michael Papageorge
相关产品推荐
相关产品推荐

