package com.github.nettybook.ch5; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.Channel; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelPipeline; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.nio.NioServerSocketChannel; public class EchoServerWithFuture { public static void main(String[] args) throws Exception { EventLoopGroup bossGroup = new NioEventLoopGroup(1); EventLoopGroup workerGroup = new NioEventLoopGroup(); try { ServerBootstrap b = new ServerBootstrap(); b.group(bossGroup, workerGroup) .channel(NioServerSocketChannel.class) .childHandler(new ChannelInitializer<SocketChannel>() { @Override public void initChannel(SocketChannel ch) { ChannelPipeline p = ch.pipeline(); p.addLast(new EchoServerHandlerWithFuture()); } }); ChannelFuture bindFuture = b.bind(8888); System.out.println("Bind 시작."); bindFuture.sync(); System.out.println("Bind 완료."); Channel serverChannel = bindFuture.channel(); ChannelFuture closeFuture = serverChannel.closeFuture(); closeFuture.sync(); } finally { workerGroup.shutdownGracefully(); bossGroup.shutdownGracefully(); } } }