본문 바로가기
728x90
반응형
SMALL

IT/JAVA45

Netty(5) - TCP/IP 파일 송수신 web 을 주로 하다보면 network 프로그래밍을 할 경우가 많지 않다. spring 을 사용하다 보니 필요 시 spring integration 을 이용하거나 아주 간단할 경우 Socket을 직접 만들어 레거시한 코드를 작성하곤 한다. Netty는 네트워크 프로그래밍을 쉽고 간편하게 그리고 유연하게 할 수 있도록 도와주는 Framework 이다. 강력한 비동기 이벤트 드리븐 기반으로 동작하기 때문에 개발자는 Business Logic 에만 집중할 수 있다. ​ Netty 에 대한 기초공부와 Handler, Encoder, Decoder 등을 간단하게 살펴보고 File 을 주고받는 application을 개발해봤다. ​ 간단히 파일만 주고 받는 것이 아니라 전문통신을 통해 파일과 더불어 사용자 정보 등.. 2021. 2. 9.
Netty(4) - encoder/decoder 기본 지난 포스팅에서 ByteArrayDecoder를 이용하여 전문통신 하는 방법에 대해서 정리 해 봤다. ​ StringDecoder, ByteArrayDecoder... 등 encoder, decoder 가 무엇인지 netty 에서 codec 이란 무엇인지 정리해 보자. ​ Message 란? 우선 네트워크 프로그램에서 message 라는 용어는 application에서 의미 있는 byte 시퀀스 구조를 말한다. 보통 프로토콜에 맞는 전문이라고 표현하기도 한다. encoder 는 이 message를 전송할 때 적합한 형식으로 변환하고, decoder는 network stream을 다시 program의 message 포맷으로 변환하는 것을 말한다. ​ Codec 이란? 일반적으로 동영상 압축 알고리즘을 co.. 2021. 2. 9.
Netty(3) - Byte array 로 받기 - ByteArrayDecoder is not a @Sharable handler 진행해야 하는 프로젝트 중에 TCP 로 전문을 받아 정해진 프로토콜에 의해 전문을 Parsing 하고 전문에 포함된 File 을 저장하여 분석해야 하는 작업이 필요했다. ​ 이전까지는 Spring integration 을 이용하거나 간단한 경우 직접 native 한 code 를 작성해서 통신작업을 개발했다. ​ netty를 이용하면 multithread 등 고민해야 할 부분들이 아주 많이 사라지고 실제로 처리해야 하는 business logic 에만 집중할 수 있기 때문에 적용해 보았다. ​ childHandler 를 만들고 등록할 때 이 channel을 초기화 해 줘야 한다. 그리고 초기화 시 필요에 따라 encoder(outbound), decoder(inbound) 를 pipeline에 등록한다. .. 2021. 2. 5.
Netty(2) - Bootstrap Bootstrap 이란 Application의 동작 및 설정을 지정해주는 helper class 이다. 사전적 의미를 찾아보면 "그 자체의 동작에 의해서 어떤 소정의 상태로 이행하도록 설정되어 있는 방법" 이다. 같은 맥락이라고 이해하면 된다. ​ Bootstrap을 통해 Netty의 Socket mode 나 thread 등을 쉽게 설정할 수 있다. 그리고 EventHandler 또한 Bootstrap을통해 설정해야 한다. ​ Bootstrap은 ServerBootstrap 과 그냥 Bootstrap으로 나뉜다. ServerBootstrap은 Server용, 그냥 Bootstrap은 Client 용이라고 이해하면 된다. ​ Bootstrap 을 사용하는 예제 코드 @RequiredArgsConstruct.. 2021. 2. 4.
728x90
반응형
LIST