zbb20180930 java,nio,netty Netty5.0用法

2021-06-15 11:05

阅读:489

class ServerHandler extends ChannelHandlerAdapter {

     /**

      * 当通道被调用,执行该方法

      */

     @Override

     publicvoid channelRead(ChannelHandlerContext ctx, Object msgthrows Exception {

         // 接收数据

         String value = (String) msg;

         System.out.println("Server msg:" + value);

         // 回复给客户端 “您好!”

         String res = "好的...";

         ctx.writeAndFlush(Unpooled.copiedBuffer(res.getBytes()));

     }

 

}

 

publicclass NettyServer {

 

     publicstaticvoid main(String[] argsthrows InterruptedException {

         System.out.println("服务器端已经启动....");

         // 1.创建2个线程,一个负责接收客户端连接, 一个负责进行 传输数据

         NioEventLoopGroup pGroup = new NioEventLoopGroup();

         NioEventLoopGroup cGroup = new NioEventLoopGroup();

         // 2. 创建服务器辅助类

         ServerBootstrap b = new ServerBootstrap();

         b.group(pGroupcGroup).channel(NioServerSocketChannel.class).option(ChannelOption.SO_BACKLOG, 1024)

                   // 3.设置缓冲区与发送区大小

                   .option(ChannelOption.SO_SNDBUF, 32 * 1024).option(ChannelOption.SO_RCVBUF, 32 * 1024)

                   .childHandler(new ChannelInitializer() {

                       @Override

                       protectedvoid initChannel(SocketChannel scthrows Exception {

                            sc.pipeline().addLast(new StringDecoder());

                            sc.pipeline().addLast(new ServerHandler());

                       }

                   });

         ChannelFuture cf = b.bind(8080).sync();

         cf.channel().closeFuture().sync();

         pGroup.shutdownGracefully();

         cGroup.shutdownGracefully();

    

     }

 

}

 


评论


亲,登录后才可以留言!