프로토콜/Netty

    [Java] Netty Client

    [Java] Netty Client

    Netty Client 1. Maven Depedency 추가 io.netty netty-all 4.1.16.Final Netty 라이브러리를 이용하기 위한 디펜던시를 추가합니다. 2. Client Netty Client를 구성하기 위해 3가지 기초 설정이 필요합니다. EventLoopGroup 생성과 Bootstrap 생성 및 구성, ChannelInitializer 생성입니다. Netty Server를 구성하기 위한 설정과 많이 비슷합니다. public NettyClient() throws InterruptedException { EventLoopGroup group = new NioEventLoopGroup(); try { Bootstrap clientBootstrap = new Bootstrap(..

    [Java] Netty Server

    Netty Server 1. Maven Depedency 추가 io.netty netty-all 4.1.16.Final Netty 라이브러리를 이용하기 위한 디펜던시를 추가합니다. 2. Server Netty 서버를 구성하기 위해 3가지 기초 설정이 필요합니다. EventLoopGroup 생성과 ServerBootstrap 생성 및 구성, ChannelInitializer 생성입니다. public class NettyServer { public NettyServer() throws InterruptedException { EventLoopGroup group = new NioEventLoopGroup(); try{ ServerBootstrap serverBootstrap = new ServerBootst..

    Netty 파이프라인

    Netty 파이프라인

    Netty 파이프라인 각 Netty SocketChannel에는 ChannelPipeline이 있고, ChannelPipeline에 ChannelHandler 인스턴스 목록이 포함 됩니다. ChannelHandler인터페이스는 두 개의 서브 인터페이스를 가지고 있습니다. ChannelInboundHandler와 ChannelOutboundHandler가 존재합니다. 처음으로 데이터가 수신되면 SocketChannel에서 ChannelInboundHandler으로 데이터가 전달됩니다. ChannelInboundHandler에서 데이터가 처리가 되면 그 다음 ChannelInboundHandler로 전달되며 마지막에 Application에 도달합니다. ChannelInboundHandler는 파이프 라인의 ..

    Netty란?

    Netty란?

    Netty란? 기존의 소켓 프로그래밍은 클라이언트가 접속하게 되면 스레드를 할당해야 하는데(1:1관계), 정말 많은 클라이언트가 접속을 하게 될 경우 그 숫자만큼 스레드를 생성해야 해서 리소스의 낭비로 이루어지고, 문맥 교환과 관련된 문제와 입력이나 출력 데이터에 관련한 무한 대기 현상이 발생하는 문제가 있었습니다. 이러한 네트워크 문제 때문에 개발된 방법이 자바의 NIO 방식(Non-Blocking Input Ouput)입니다. 핵심으로는 네트워크 리소스 사용률을 세부적으로 제어하는 Non-Blocking 호출이 포함되어 있는 것으로, 내부적으로 시스템의 이벤트 통지 API를 이용해 논 블록킹 소켓을 등록하면 해당 소켓의 정보를 확인할 수 있습니다. 즉 무한 대기 현상을 회피할 수 있게 되는 것이지요...