본문 바로가기

Netty21

Netty Encoder with VSCode (1) 앞에서 봤던 Decoder에 이어서 Encoder에 대해 알아보자 Decoder는 InBound로, Encoder는 Outbound에 쓰인다. 2022.01.07 - [프로그래밍/Netty Encoder & Decoder] - Netty Decoder with VS Code (2) 앞의 예제를 보면 마지막 오류난 코드를 보자 MyChannelHandler의 readChannel에 보면 writeAndFlush에서 Integer를 그대로 보냈다. 그러다 보니 읽는 쪽에(channel.readOutbound)에서는 Integer로 읽어야 하는데 ByteBuf로 읽으니 오류가 난것이다. 그럼 보낼때 ByteBuf로 보내면 되니 그렇게 Encoder를 작성 해보자 public class ChannelTest {.. 2022. 1. 10.
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.
Netty ChannelHandler 아마 Netty를 하면서 가장 많이 접하는것 중에 하나가 ChannelHandler일것이다. 여기에 보면 ChannelHandler는 I/O 이벤트를 핸들링 하고, pipeline의 다음 handler에 전달하는 역활을 한다고 정의가 되어있다. 그리고 Encoder, Decoder, InboundHandler, OutboundHandler 부터 엄청 많다. 한번씩 보고 눈에 살짝 익혀 놓으면 나중에 다른거 개발할때도 좋을것 같다 그리고 좀더 편하게 쓰기위해서 Adapter class를 제공하고 있으며, 가장 많이 쓰는게 아래 세개 정도이다. ChannelInboundHandlerAdapter : 유입되는 데이터에 대한 I/O를 핸들링 한다. ChannelOutboundHandlerAdapter : 유출되.. 2022. 1. 10.