forked from netty/netty
-
Notifications
You must be signed in to change notification settings - Fork 0
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() 메서드는 소켓 채널의 이벤트 처리를 위한 이벤트 루프를 설정
- Bootstrap의 group 메서드는 ServerBootstrap에서와는 달리 단 하나의 이벤트 루프만 설정 가능
- 클라이언트 애플리케이션은 서버에 연결한 소켓 채널 하나만 가지고 있음( 채널의 이벤트를 처리할 이벤트 루프도 하나)
- .channel() 메서드는 클라이언트 소켓 채널의 입출력 모드를 설정
- Bootstrap의 channel 메서드는 ServerBootstrap에서와는 달리 클라이언트 소켓 채널만 설정 가능
- LocalChannel.class: 한 가상머신 안에서 가상 통신을 하고자 클라이언트 소켓 채널을 생성하는 클래스
- OioSockerChannel.class: 블로킹 모드의 클라이언트 소켓 채널을 생성하는 클래스
- NioSocketChannel.class: 논블로킹 모드의 클라이언트 소켓 채널을 생성하는 클래스
- EpollSocketChannel.class: 리눅스 커널의 epoll 입출력 모드를 지원하는 클라이언트 소켓 채널을 생성하는 클래스
- OioSctpChannel.class: SCTP 전송 계층을 사용하는 블로킹 모드의 클라이언트 소켓 채널을 생성하는 클래스
- NioSctpChannel.class: SCTP 전송 계층을 사용하는 논블로킹 모드의 클라이언트 소켓 채널을 생성하는 클래스
- channelFactory() 메서드는 channel() 메서드와 동일하게 소켓 채널의 입출력 모드를 설정
- handler() 메서드는 클라이언트의 소켓 채널에서 발생하는 이벤트를 수신하여 처리
- ChannelInitializer 클래스를 통해서 등록
- 소켓채널에서 발생하는 이벤트를 처리
- option() 메서드는 클라이언트 소켓 채널의 소켓 옵션을 설정