我剛剛開始編碼Netty 4,發現它似乎只支持單數分隔符,即使它聲稱支持多個分隔符。事實是,它支持交替使用多個分隔符,而不是同時使用。如何在Netty 4中添加頭部和尾部分隔符幀解碼器?
爲什麼我需要頭部和尾部分隔符的原因是爲了在發生包丟失或無序包接收情況下的速度。 例如我的框架看起來像這樣:$ _ {LEN} {DATA} \ r \ n
所以我的頭部分隔符是$ _,而尾部分隔符是\ r \ n。
假設在一幀中接收到多個數據包,而一些中間數據包在傳輸期間丟失,如果沒有$ ,解碼器必須繼續搜索\ r \ n以確定結束。如果\ r \ n也丟失了,那麼它必須搜索下一個\ r \ n而不是擊中導致新消息的$ ...
但是現在的Netty DelimiterBasedFrameDecoder似乎無法支持我想上面。我應該如何實現這個目的?
它看起來對我來說Netty FrameDecoder設計沒有考慮到數據包丟失或打包器無序的情況?對Netty來說,我可能是錯的。如果有人能夠告訴我這件事,請予以諒解。
你使用udp或tcp流嗎?在udp流中,您通常不會重新分配接收到的字節 – Ferrybig
tcp streams:服務器在雲端數據中心運行,客戶端設備通過WiFi LAN或3G/2G SIM移動無線廣域網連接。因此,網絡可能不穩定,容易受到網絡干擾,通常會導致數據包丟失... –
請注意,tcp可以保證您的數據是原樣(因此無需修改)或連接錯誤。這意味着數據包的任何部分都不會丟失。 – Ferrybig