관리 메뉴

한글창제의 기쁨

Netty Discard/Echo Server 본문

Netty

Netty Discard/Echo Server

timesurfer 공간지배자 2018.01.24 21:54

네티는 이벤트를 인바운드 이벤트와 아웃 바운드 이벤트로 구분한 추상화 모델을 제공한다.

네트워크 송수신을 추상화하기 위하여 이벤트 모델 정의함.

데이터 송신을 아웃바운드 이벤트 , 테이터 수신을 인바운드 이벤트로 정의.

인바운드와 아웃 바운드 이벤트는 프로그램을 기준으로 생성된다.

 

서버/클라이언트 입장에서의 데이터 이동 방향성

     Client ---------------------------------------------------------------------Server

     Outbound        ----->  Send    (몇시에요?) ---------->         Inbound

     Inbound          <–--- (오후 8시)Response <----------         Outbound

 

ServerBootstrap 을 이용하여 Netty 구동

ServerBootstrap 

    .channel(NioServerSocketChannel.class)    //  클라이언트 애플리케이션이 생성하는 채널의 종류 설정  NIO

    .childHandler(new ChannelInitializer<SocketChannel>(){

        public void init(SocketChannel ch) { 

            ChannelPipeline p = ch.pipeline()

            p.addLast(new EchoServerHandler())   // 지정된 핸들러로 수신된 데이터 컨트롤  

        }

    })

 

상속 구조 

ChannelInboundHandlerAdapter    ←  SimpleChannelInbundHandlerAdapter   

              ↑

EchoServerHandler



ChannelInboundHandlerAdapter  

    Server 입장

    channelRead () : 데이터 수신 이벤트 처리 메서드, 클라이언트로 부터 데이터 수신이 이루어진 경우 네티가 자동으로 호출하는 메소드 

    channelReadComplate() : channelRead 이벤트 처리가 완료된 후 자동으로 수행되는 이벤트 메서드로, 채널 파이프라인에 저장된 버퍼를 전송하는 flush 메서드를 호출.

    Client 입장

    channelActive (): 소켓채널이 최초활성화 되었을때 발생되는 이벤트 

    channelReadComplate()  : 수신된 데이터를 모두 읽은후 서버와 연결된 채널을 닫는다. 이후 데이터 송수신 채널은 닫히게 되고 클라이언트 프로그램은 종료.

    exceptionCaught()  

'Netty' 카테고리의 다른 글

Netty EventLoop / ChannelPipeLine 모델  (0) 2018.06.27
Netty 중요 개념 / Serverbootstrab 설정  (0) 2018.04.02
Netty Discard/Echo Server  (0) 2018.01.24
0 Comments
댓글쓰기 폼