Skip to content

Bootstrap API

andy edited this page Aug 9, 2019 · 3 revisions
public final class EchoClient {
    public static void main(String[] args) throws Exception {
        EventLoopGroup group = new NioEventLoopGroup();

        try {
            Bootstrap b = new Bootstrap();
            b.group(group)
             .channel(NioSocketChannel.class)
             .handler(new ChannelInitializer<SocketChannel>() {
                 @Override
                 public void initChannel(SocketChannel ch) throws Exception {
                     ChannelPipeline p = ch.pipeline();
                     p.addLast(new EchoClientHandler());
                 }
             });

            ChannelFuture f = b.connect("localhost", 8888).sync();

            f.channel().closeFuture().sync();
        }
        finally {
            group.shutdownGracefully();
        }
    }
}

group

  • .group() 메서드는 소켓 채널의 이벤트 처리를 위한 이벤트 루프를 설정
  • Bootstrap의 group 메서드는 ServerBootstrap에서와는 달리 단 하나의 이벤트 루프만 설정 가능
    • 클라이언트 애플리케이션은 서버에 연결한 소켓 채널 하나만 가지고 있음( 채널의 이벤트를 처리할 이벤트 루프도 하나)

channel

  • .channel() 메서드는 클라이언트 소켓 채널의 입출력 모드를 설정
  • Bootstrap의 channel 메서드는 ServerBootstrap에서와는 달리 클라이언트 소켓 채널만 설정 가능
    • LocalChannel.class: 한 가상머신 안에서 가상 통신을 하고자 클라이언트 소켓 채널을 생성하는 클래스
    • OioSockerChannel.class: 블로킹 모드의 클라이언트 소켓 채널을 생성하는 클래스
    • NioSocketChannel.class: 논블로킹 모드의 클라이언트 소켓 채널을 생성하는 클래스
    • EpollSocketChannel.class: 리눅스 커널의 epoll 입출력 모드를 지원하는 클라이언트 소켓 채널을 생성하는 클래스
    • OioSctpChannel.class: SCTP 전송 계층을 사용하는 블로킹 모드의 클라이언트 소켓 채널을 생성하는 클래스
    • NioSctpChannel.class: SCTP 전송 계층을 사용하는 논블로킹 모드의 클라이언트 소켓 채널을 생성하는 클래스

channelFactory

  • channelFactory() 메서드는 channel() 메서드와 동일하게 소켓 채널의 입출력 모드를 설정

handler

  • handler() 메서드는 클라이언트의 소켓 채널에서 발생하는 이벤트를 수신하여 처리
  • ChannelInitializer 클래스를 통해서 등록
  • 소켓채널에서 발생하는 이벤트를 처리

option

  • option() 메서드는 클라이언트 소켓 채널의 소켓 옵션을 설정