我使用的是netty 3.4.5版本。當我從網絡接收數據包時,幀的長度基於標題。即基於標頭的Netty幀解碼
header1 - >長度爲70字節的數據。
header2 - >長度爲140字節的數據。
header3 - >長28字節的數據。
我想在netty中使用lengthbasedframedecoder。請告訴我如何做到這一點。 也建議我,如果有任何其他方式來做到這一點。
謝謝
我使用的是netty 3.4.5版本。當我從網絡接收數據包時,幀的長度基於標題。即基於標頭的Netty幀解碼
header1 - >長度爲70字節的數據。
header2 - >長度爲140字節的數據。
header3 - >長28字節的數據。
我想在netty中使用lengthbasedframedecoder。請告訴我如何做到這一點。 也建議我,如果有任何其他方式來做到這一點。
謝謝
如果header1
,header2
,header3
是具有相同的長度,可以通過覆蓋在getUnadjustedFrameLength
在LengthFieldBasedFrameDecoder
這樣做。
switch(buf.getUnsignedInt) { //get header here
case header1 : return 70;
case header2: return 140;
case header3: return 28;
}
我沒有檢查這段代碼。你有沒有檢查過。 – shivadarshan 2014-09-06 08:10:46
它適合你嗎? – shivadarshan 2014-09-06 08:11:23
實際上,如果'headerX'不是指示剩餘字節的長度,那麼這不是一個基於長度字段的幀。 – jilen 2014-09-04 07:10:47
@jilen請給出一個想法,以實現上述情況... – shivadarshan 2014-09-05 08:25:31
在閱讀netty源代碼後,我發現最簡單的方法是重寫'LengthFieldBasedFrameDecoder'中的'getUnadjustedFrameLength'方法(需要長度爲'header1,header2,header3'相同) – jilen 2014-09-05 08:45:14