各位路過大佬好,
我想實作一個類似架在客戶端 和代理之間橋的功能, 檢測到一幀MQTT報文后進行傳送。
因為MQTT協議的固定報文頭 是根據報文型別變化的,后續也沒有校驗計算,認為很容易會出現檢幀檢錯的情況(),比如幀中間丟失一個位元組, 按照長度取值,就會把后一幀的幀頭放到第一幀的末尾。
這兩天看了一個關于MQTT原始碼+LWIP TCP/IP協議堆疊實作庫,看著原始碼中就是從tcp包中拿到的第一個資料就開始按幀頭去檢,不合法在從下一個開始檢,合法則開始拿幀長度,根據拿到的長度 取出完整的一幀報文。 如果是我理解的這樣的話 那應該很容易出現檢錯的情況。
不知有何辦法解決, 還是我對協議或原始碼理解有誤。望賜教。
uj5u.com熱心網友回復:
不會出現你說的情況,TCP協議本身就是有序可靠傳輸,不存在跳過位元組接收的情況。如果是連續傳輸2幀,在接收第2幀的第一個位元組時,那第1幀必定已經全部傳輸完成。轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/84533.html
標籤:嵌入開發(WinCE)
