프로그래밍44 Netty ByteBuf ( readerIndex, writeIndex) Netty의 데이터를 다루기 위한 기본적인 데이터 컨테이너이다.. Network상에서는 byte array 형태로 데이터가 왔다갔다 하는데, 해당 byte를 다루기 쉽게 해준다 우선 정의를 보자. A random and sequential accessible sequence of zero or more bytes (octets). This interface provides an abstract view for one or more primitive byte arrays (byte[]) and NIO buffers. 8bit단위의 바이트나 zero 바이트를 랜덤또는 순차적으로 엑세스가 가능하고, 이것은 primitive byte arrays 나 NIO 버퍼의 추상화 뷰를 제공한다고 한다. ( 힘드네;;) .. 2022. 1. 10. 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. 이전 1 2 3 4 5 6 7 8 ··· 11 다음