求助 CH32V307 MQTT发送数据长度超过1400+之后 TCP Disconnect

求助 CH32V307 MQTT发送数据长度超过1400+之后 TCP Disconnect

请问是什么原因,如何解决?

您好,实测CH32V307 MQTT收发数据最大长度为1448,若所收发数据长度超过1448需要分成多次收发。收发期间并未出现 TCP Disconnect的情况,建议使用最新的EVT进行测试。若还有其他问题可通过邮件与我联系。

zl@wch.cn


你好,请问例程中有多次发送吗?

我自己写了个多次发送,但是连续发送3次以上,第3次或者第4次大概率出现0 bytes upload,就是没有数据上传,可mqtt是连接的。

请问这是什么原因?


您好,例程中默认20s发送一次数据,实测并没有出现发送失败的情况。如果方便可将您的测试程序通过邮箱发我,这边帮您测试一下,查一下原因。邮箱:zl@wch.cn


该问题是因为连续发送导致发送缓冲区都被占用了,所以第三次或第四次就无法获得发送buff,导致的发送失败。len大小在执行完发送函数之后会更新,如果某一次没发送成功,那么此时的len的返回值就会是0,那以后调用函数传进去的都是0,也就是说根本没有数据会填进去。解决方法就是监控len的长度,当变为0的时候需要及时更新len的值与buff。



连续发送10几包后,下一包检查返回值出错后。我将len的值更新,多次发送后还是发不出去。就是这一包数据一直发不出去,是什么原因?是发送缓冲区一直被占用了?这个缓冲区应该怎么清。



只有登录才能回复,可以选择微信账号登录