2014-09-04 63 views
0

我使用的是netty 3.4.5版本。當我從網絡接收數據包時,幀的長度基於標題。即基於標頭的Netty幀解碼

header1 - >長度爲70字節的數據。

header2 - >長度爲140字節的數據。

header3 - >長28字節的數據。

我想在netty中使用lengthbasedframedecoder。請告訴我如何做到這一點。 也建議我,如果有任何其他方式來做到這一點。

謝謝

+0

實際上,如果'headerX'不是指示剩餘字節的長度,那麼這不是一個基於長度字段的幀。 – jilen 2014-09-04 07:10:47

+0

@jilen請給出一個想法,以實現上述情況... – shivadarshan 2014-09-05 08:25:31

+0

在閱讀netty源代碼後,我發現最簡單的方法是重寫'LengthFieldBasedFrameDecoder'中的'getUnadjustedFrameLength'方法(需要長度爲'header1,header2,header3'相同) – jilen 2014-09-05 08:45:14

回答

0

如果header1header2header3是具有相同的長度,可以通過覆蓋在getUnadjustedFrameLengthLengthFieldBasedFrameDecoder這樣做。

switch(buf.getUnsignedInt) { //get header here 
    case header1 : return 70; 
    case header2: return 140; 
    case header3: return 28; 
} 
+0

我沒有檢查這段代碼。你有沒有檢查過。 – shivadarshan 2014-09-06 08:10:46

+0

它適合你嗎? – shivadarshan 2014-09-06 08:11:23