粘包是因為發送太快了,可以通過發送固定長度數據包和在數據包前後加標識以做截取解決。
給妳介紹第壹種方法,發送固定長度的數據包,不足長度的補數,這種方法要固定讀取N長度的數據
整體說按類型分,可以分為頭包,壹般包,尾包
這三種數據包的格式可以這樣包頭+實際數據+檢驗位
1. 頭包,比如可以是A01:LXXXXXXXXXXXC
包頭可以用包頭標識+第幾幀+開始截取標誌+文件長度L構成,例子中是A01:),L為所有數據包加起來的實際數據總長度,XXXXXXXX為實際數據占 N字節(N為固定字節,這個妳自己定義大小),C為校驗位占壹個字節,即所有數據的累加和
2. 壹般包,格式可以為P02:XXXXXXXXXXXXC
類似包頭格式,P為壹般包標識,02表示第二個包
3 包尾,格式可以為D03:XXXXXFFFFFFC
此處XXXXX為實際數據,FFFFF為不足N位的補數,最後壹個包是多長可以通過頭包L跟尾包算出來
各種校驗
1. 收到的數據包要做校驗位驗證,就是格式中的C
2. 每次收到包要判斷是不是期望的包,通過第幾個包來判斷,比如妳要收第4個包了,但妳收到了P05,那就重新請求壹次要收第四個包,或者是直接失敗
3 其他校驗,具體情況具體分析
第二種數據包前後加標識以做截取解決也是類似的,就是在實際數據前後加上壹些供妳判斷的標識,思路已經在這裏了,具體格式要自己定義,因為妳是程序員