예제21 Netty Encoder & Decoder 네트워크로 데이터는 row byte로 흘러 다니는데 그걸 수신하고 자기가 원하는 포멧으로 바꾸거나 (Decoder) 다시 네트워크로 보낼때 row byte로 바꿔주는 역활을 하는 것이라고 보면 된다. EchoServer를 다시 보면 들어오는것은 byte ▶ loggingHandler로 로그찍고(byte) ▶ StringDecoder (String) ▶ EchoServerHandler ( String) 으로 도착하게 된다. 그리고 나갈때는 EchoServerHandler ( String) ▶ StringEncoder ( byte ) ▶ LoggingHandler (byte) 로 흘러간다. channel.pipeline().addLast(new LoggingHandler(LogLevel.INFO)); // .. 2022. 1. 10. 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. 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. 이전 1 2 3 4 5 6 다음