求助 CH32V307 MQTT發(fā)送數(shù)據(jù)長度超過1400+之后 TCP Disconnect

求助 CH32V307 MQTT發(fā)送數(shù)據(jù)長度超過1400+之后 TCP Disconnect

請問是什么原因,如何解決?

您好,實(shí)測CH32V307 MQTT收發(fā)數(shù)據(jù)最大長度為1448,若所收發(fā)數(shù)據(jù)長度超過1448需要分成多次收發(fā)。收發(fā)期間并未出現(xiàn) TCP Disconnect的情況,建議使用最新的EVT進(jìn)行測試。若還有其他問題可通過郵件與我聯(lián)系。

zl@wch.cn


你好,請問例程中有多次發(fā)送嗎?

我自己寫了個多次發(fā)送,但是連續(xù)發(fā)送3次以上,第3次或者第4次大概率出現(xiàn)0 bytes upload,就是沒有數(shù)據(jù)上傳,可mqtt是連接的。

請問這是什么原因?


您好,例程中默認(rèn)20s發(fā)送一次數(shù)據(jù),實(shí)測并沒有出現(xiàn)發(fā)送失敗的情況。如果方便可將您的測試程序通過郵箱發(fā)我,這邊幫您測試一下,查一下原因。郵箱:zl@wch.cn


該問題是因?yàn)檫B續(xù)發(fā)送導(dǎo)致發(fā)送緩沖區(qū)都被占用了,所以第三次或第四次就無法獲得發(fā)送buff,導(dǎo)致的發(fā)送失敗。len大小在執(zhí)行完發(fā)送函數(shù)之后會更新,如果某一次沒發(fā)送成功,那么此時的len的返回值就會是0,那以后調(diào)用函數(shù)傳進(jìn)去的都是0,也就是說根本沒有數(shù)據(jù)會填進(jìn)去。解決方法就是監(jiān)控len的長度,當(dāng)變?yōu)?的時候需要及時更新len的值與buff。



連續(xù)發(fā)送10幾包后,下一包檢查返回值出錯后。我將len的值更新,多次發(fā)送后還是發(fā)不出去。就是這一包數(shù)據(jù)一直發(fā)不出去,是什么原因?是發(fā)送緩沖區(qū)一直被占用了?這個緩沖區(qū)應(yīng)該怎么清。



只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频