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

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

深?lèi)?ài)迷惘

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

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

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

3924 3 1
3個(gè)回答

wangzhibin

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

這樣直接return即可

  • 暫無(wú)評(píng)論

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

  • 暫無(wú)評(píng)論
walkor 打賞

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

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

  • 暫無(wú)評(píng)論
年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表回答
??