2013-03-23 1 views
0

아주 간단한 소켓 서버를 구현하려고합니다. 새 줄이나 다른 구분 기호로 분할 된 메시지를 읽어야합니다. 이 문서에 따르면 netty 4.0 입력 바이트 디코딩

: http://netty.io/4.0/api/io/netty/handler/codec/string/StringDecoder.htmlhttp://netty.io/4.0/api/io/netty/handler/codec/DelimiterBasedFrameDecoder.html

트릭을 할해야 채널 초기화

ChannelInitializer<SocketChannel> channelInitializer = new ChannelInitializer<SocketChannel>() { 
      @Override 
      public void initChannel(SocketChannel ch) throws Exception { 

       ch.pipeline().addLast("frameDecoder", new DelimiterBasedFrameDecoder(Delimiters.lineDelimiter())); 
       ch.pipeline().addLast("stringDecoder", new StringDecoder(CharsetUtil.UTF_8)); 

       // Encoder 
       ch.pipeline().addLast("stringEncoder", new StringEncoder(CharsetUtil.UTF_8)); 
      } 
     }; 

이 코드입니다.

그러나 제공된 매개 변수로 작동하는 디코더 및 인코더에는 적합한 생성자가 없습니다. 그들은 어떤 정수를 첫 번째 매개 변수와 Byte 배열로 기대합니다. stringDecoder만이 괜찮은 것 같습니다.

무엇이 여기에 있습니까?

+0

죄송합니다. 질문과 문제를 이해할 수 없습니다. 다시 말해 줄 수 있니? –

+0

간단히 : 문서에서 사용한 사용 예제가 작동하지 않습니다. 그것이 문제이다. 질문은 올바르게 사용하는 방법입니다. – bazo

답변

0

netty 4.0의 인라인 설명서는 현재 구식이지만 알파/베타/개발 상태입니다.

정수 매개 변수는 무제한 버퍼 증가를 방지하기 위해 도입되었으며 최대 프레임 길이를 지정합니다.

따라서 new LineBasedFrameDecoder(4096))new DelimiterBasedFrameDecoder(Delimiters.lineDelimiter())과 유사합니다.

관련 문제