目測乙個 阿里雲 C SDK mqtt通訊小bug

2021-09-24 15:50:12 字數 520 閱讀 9031

版本3.0.1

iot_mqtt_yield

_mqtt_cycle

iotx_mc_cycle

iotx_mc_read_packet

三次read,一次用來判斷是否有資料來,一次用來解析包長,一次用來收取整個包。

rc = c->ipstack.read(&c->ipstack, c->buf_read + len, rem_len, left_t);

if (rem_len > 0) else if (rc != rem_len)

}read返回位元組數和需求不一樣時候,強制返回錯誤,並且會丟棄已經讀取的資料,此時會導致後續報文解析失敗,mqtt協議棧錯亂。

出現情況:1、資料報大於mtu需要分包;2、或者下層是慢串列埠通訊時候,會導致乙個資料報只有部分達到,即read不到乙個完整的包。

解決辦法:1. 在給mqtt協議棧喂資料時 ,確保資料報已經完整,即在下層做一下簡單報文解析。

2.修改sdk,增加靜態buffer,增加need_more狀態機狀態。

乙個阿里雲的面試題

問題描述 有101根電線 每根的一頭在樓底 另一端在樓頂 有乙個燈泡 乙個電池 無數根很短的電線 怎麼樣在樓上一次在樓下去一次將電線的對應關係弄清楚。在樓頂的階段 首先任意選出7根線 例如最左邊的 可命名為a0 a6,那麼還剩下94根線,編號為0 93,對於i線,可以寫出i的二進位制形式,例如11號...

阿里雲乙個ecs只能申請5個服務號

阿里雲乙個ecs只能申請5個服務號 最近在買了臺阿里雲的ecs伺服器,是中國大陸的伺服器,需要備案,對於阿里雲伺服器,速度絕對是業內可以說數一數二的,所以決定買了臺阿里雲的ecs伺服器,於是將之前的 備案重新接入阿里雲,發現乙個ecs最多只能申請5個備案服務號,但是我們的 的網域名稱備案服務號數量已...

通過阿里雲發布乙個Tomcat,並通過網域名稱訪問

以下只是我個人的經歷 1.阿里雲購買網域名稱www.qianxueya.com engine節點中defaulthost原localhost改為申請到的網域名稱。name catalina defaulthost www.qianxueya.com 8.host節點中name原localhost改為...