パッケージcom.xiaofeiyang。 輸入io.netty.bootstrap.ServerBootstrap; 輸入io.netty.channel.ChannelFuture; 輸入io.netty.channel.ChannelInitializer; 輸入io.netty.channel.ChannelOption; 輸入io.netty.channel.EventLoopGroup; 輸入io.netty.channel.nio.NioEventLoopGroup; 輸入io.netty.channel.socket.SocketChannel; 輸入io.netty.channel.socket.nio.NioServerSocketChannel; 輸入io.netty.util.AttributeKey; / ** * @author :陽春 * @description: * @date:2020年4月2日午前12時23分に作成されました * / パブリック 最終 クラスNioServer { 公共 静的 ボイドメイン(文字列[]引数)がスロー例外{ EventLoopGroup bossGroup = 新しい NioEventLoopGroup(1 )。 EventLoopGroup workerGroup = 新しいNioEventLoopGroup(); トライ{ ServerBootstrapのB = 新しいServerBootstrap()。 b.group(bossGroup、workerGroup) .channel(NioServerSocketChannel。クラス) .childOption(ChannelOption.TCP_NODELAY、真) .childAttr(AttributeKey.newInstance( "childAttr")、 "childAttrValue" ) // .handler(新ServerHandler()) .childHandler(新しい ChannelInitializer <のSocketChannel> (){ @Override 公共 のボイドinitChannel(たSocketChannel CH){ // CH .pipeline()addLast(新しいAuthHandler()); // ... } })。 ChannelFuture F = b.bind(8888 ).sync(); 。f.channel()closeFuture()同期()。 } 最後に { bossGroup.shutdownGracefully()。 workerGroup.shutdownGracefully(); } } }
サーバーチャネルを作成します。1.
練る()
initAndRegister()
channelFactory.newChannel()
これのChannelFactory反射によりチャネルを作成します。NioServerSocketChannelでのChannelFactoryを作成するのChannelFactory。
この方法により構成を構築することによりNioServerSocketChannel
newSocket()
NioServerSocketChannelConfig()
AbstractionNioChannel()
configureBlocking(偽)
図2に示すように、初期化チャネル
3、登録セレクタ
図4に示すように、ボンド・ポート