A-->偏移:0 包長:200
B-->偏移:25 包長:200
C-->偏移:50 包長:200
D-->偏移:75 包長:200
E-->偏移:100 包長:200
------------------------------------------------------------------------
組包自然是收到ABCDE然后按這個順序組上即可。
但是接受順序是不受保證的。
------------------------------------------------------------------------
所以大家覺得應該寫成一個怎樣的盡量高效的邏輯,來判斷組包是否完成?
收到一個扔到一個佇列中,然后根據片偏移排序?排完后計算 :
if(0*8+200 == 25*200)
if(25*8+200 == 50*200)
...
回圈?
每收到一包都要這么干嗎?效率怎么感徑訓比較低?
感覺挺麻煩。
或者我在想,能不能:收到的n包排好序,第n+1包通過某種方式剛好插入到對的位置?
或者我又想,能不能:區域組包,本來分了40片。我可能先收到了{2,3,4}、{14,15}、{30,31,32}。那我先給他組成3片?這樣會快一些嗎?
uj5u.com熱心網友回復:
如何保證一段連續記憶體均被訪問過一次?uj5u.com熱心網友回復:
沒研究過,參考TCP怎么做的??uj5u.com熱心網友回復:
不知道有多少前人掉在TCP Socketsend(人多)send(病少)send(財富)
recv(人多病)recv(少財富)
陷阱里面啊!
http://bbs.csdn.net/topics/380167545
uj5u.com熱心網友回復:
寫完了。反正寫著寫著就寫完了。結果寫完了,丫拿資料出來一看。好家伙。發現、想起這TCP都給分好了。ip實際上幾乎不用分片。
導致我寫的關鍵重組部分的代碼都沒跑,也不知道有沒有bug
-----------------------------------------------------------------------
大佬們,問另一個問題吧:我寫的ip重組程式。拿什么來驗證呢?
uj5u.com熱心網友回復:
組包完成:自己傳輸的時候帶上包頭包尾包資訊,再判斷一下?測驗:斷網,傳輸中斷,中斷重連,阻塞?
你看咋樣
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/285109.html
標籤:模式及實現
