2014-09-04 3 views
0

netty 3.4.5 버전을 사용 중입니다. 네트워크에서 패킷을 받으면 프레임의 길이는 헤더를 기반으로합니다. 즉헤더 기반의 Netty Frame 디코딩

header1 -> 길이가 70 바이트 인 데이터.

header2 -> 길이가 140 바이트 인 데이터.

header3 -> 길이가 28 바이트 인 데이터.

길이 기반 프레임 인코딩을 사용하고 싶습니다. 이 방법을 제안 해주세요. 다른 방법이 있다면 나에게 제안하십시오.

+0

실제로 'headerX'가 나머지 바이트의 길이를 나타내는 경우 길이 필드 기반 프레임이 아닙니다. – jilen

+0

@jilen 위의 시나리오를 달성하기위한 아이디어를주십시오 ... – shivadarshan

+0

netty 소스 코드를 읽은 후, 가장 쉬운 방법은'LengthFieldBasedFrameDecoder' ('header1, header2, header3'의 길이를 필요로합니다)의'getUnadjustedFrameLength' 메소드를 오버라이드하는 것입니다. 같은 경우) – jilen

답변

0

header1header2header3가 같은 길이있는, 당신은이 같은 LengthFieldBasedFrameDecoder에서 오버라이드 getUnadjustedFrameLength하여이 작업을 수행 할 수 있다면 감사합니다.

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

i이 코드는 확인하지 않았습니다. 너 그걸 확인 했니? – shivadarshan

+0

그것이 작동합니까? – shivadarshan