国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

定制協(xié)議錯(cuò)誤數(shù)據(jù)清理問題

深愛迷惘

我自定義了一套協(xié)議,采用的TCP傳輸方式,協(xié)議主要作用是判斷數(shù)據(jù)完整及有效性并進(jìn)行初步處理轉(zhuǎn)換成一個(gè)對象提交到ONMESSAGE里面去處理.

現(xiàn)在有一個(gè)問題,當(dāng)我在INPUT里面判斷出來BUFFER里面的數(shù)據(jù)幀頭是錯(cuò)誤的,不符合我的協(xié)議規(guī)范要求,這時(shí)我需要將BUFFER清空并返回0,表示清空緩沖區(qū),不調(diào)用DECODE并等待下一幀數(shù)據(jù)的到達(dá).

測試直接設(shè)置BUFFER=NULL無效,下一幀數(shù)據(jù)到達(dá)時(shí)會加上之前錯(cuò)誤的數(shù)據(jù),如果RETURN整個(gè)數(shù)據(jù)的長度又會觸發(fā)DECODE及ONMESSAGE,這樣我需要在后面兩個(gè)回調(diào)里面再次去判斷有效性,有點(diǎn)浪費(fèi)資源.我希望數(shù)據(jù)到DECODE就已經(jīng)是有保證的有效性的數(shù)據(jù),不知道這個(gè)有什么好的解決辦法?

4086 3 1
3個(gè)回答

wangzhibin

if(數(shù)據(jù)非法) return;

這樣直接return即可

  • 暫無評論
深愛迷惘

謝謝你的解答,我先進(jìn)一步測試一下,非常感謝1

  • 暫無評論
walkor 打賞

調(diào)用$connection->consumeRecvBuffer($length)來清空接收緩沖區(qū)的數(shù)據(jù),$length代表清空多少字節(jié)。
然后input里面return 0即可。

建議:
建議收到無效數(shù)據(jù)最好把鏈接斷開,不能容忍客戶端的數(shù)據(jù)錯(cuò)誤。
將buffer清空不一定保證下一個(gè)正確的包能被解析。因?yàn)榍蹇盏臄?shù)據(jù)里面可能包含了下一個(gè)正確包的包頭部分,造成下一個(gè)包解析時(shí)也出現(xiàn)錯(cuò)誤,如此惡性循環(huán),可能導(dǎo)致這個(gè)鏈接上發(fā)來的數(shù)據(jù)都是無法解析的。

  • 暫無評論
年代過于久遠(yuǎn),無法發(fā)表回答
??