본문 바로가기

vscode34

EmbeddedChannel 활용 (LineBasedFrameDecoder 테스트) LineBasedFrameDecoder 살펴보자 받은 bytebuf 데이터를 line endings , "\n","\r\n" 을 분리해준다고 한다. 밑에는 주루룩 읽어보면 될듯~ 자 그럼 앞에 있었던 코드를 바꿔보자 아래 내용으로 바꾸면 기대하는 건 channelRead 시에 안녕반가워 -> 두번째 반가워 -> 세번째 반가워 가 순서대로 도착할것같다 ByteBuf buf = Unpooled.buffer(); buf.writeBytes("안녕 반가워\n\n".getBytes()); // 변경 전 buf.writeBytes("안녕 반가워\n두번째 반가워\n세번째 반가워\n".getBytes()); // 변경 후 LoggingHandler에 byte형태로 수신된 첫번째 단락으로 보면 "\n" 은 0a 로 표시.. 2022. 1. 10.
Netty ChannelHandler 아마 Netty를 하면서 가장 많이 접하는것 중에 하나가 ChannelHandler일것이다. 여기에 보면 ChannelHandler는 I/O 이벤트를 핸들링 하고, pipeline의 다음 handler에 전달하는 역활을 한다고 정의가 되어있다. 그리고 Encoder, Decoder, InboundHandler, OutboundHandler 부터 엄청 많다. 한번씩 보고 눈에 살짝 익혀 놓으면 나중에 다른거 개발할때도 좋을것 같다 그리고 좀더 편하게 쓰기위해서 Adapter class를 제공하고 있으며, 가장 많이 쓰는게 아래 세개 정도이다. ChannelInboundHandlerAdapter : 유입되는 데이터에 대한 I/O를 핸들링 한다. ChannelOutboundHandlerAdapter : 유출되.. 2022. 1. 10.
01. Pipeline 테스트 간단히 하기(feat. EmbeddedChannel) - 1 Pipeline Netty에서 pipeline에는 channel Handler의 흐름을 기록하고 있다. 아래 코드를 보면 카페를 차리고 (Serverbootstrap), 문을 만들고, 카운터를 배치시키고 ( serverbootstrap.group(bossGroup, workGroup) ) 어떤말로 할지 결정하고 ( serverbootstrap.channel(NioServerSocketChannel.class) ) 그 다음에 손님이 왔을때 어떤 순서로 응대할지 정한 메뉴얼이 pipeline이다 LoggingHandler ▶ StringDecoder ▶ SampleClientHandler ▶ StringEncoder ▶ LoggingHandler 의 순서로 흐른다. serverbootstrap.handler.. 2022. 1. 7.
06. Discard Client 만들기 클라이언트를 만들다 보면 Netty가 정말 편한다는것을 알수 있다. 전체코드를 한번보고 서버와 다른점을 한번 더 보자 DiscardClient.java Server와 특별하게 다른점은 안보일것이다. 살짝 다른 부분만 보자. 아래 코드는 하나의 java에 클래스 두개 만들어서 사용했다 접속하자 마자 Say Hello... 만 보내주는 코드이다. 그 외 Handler가 동작하는 모습은 서버와 동일하다고 보면 된다. 이벤트도 동일한 순서대로 일어나는것을 볼수 있다 import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.core.config.Configurato.. 2022. 1. 7.