码迷,mamicode.com
首页 > 编程语言 > 详细

zbb20180930 java,nio,netty Netty5.0用法

时间:2018-09-30 20:02:09      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:except   public   oid   ora   may   err   alpha   设置   order   

Netty5.0用法

Maven坐标

      <dependencies>

           <!-- https://mvnrepository.com/artifact/io.netty/netty-all -->

           <dependency>

                 <groupId>io.netty</groupId>

                 <artifactId>netty-all</artifactId>

                 <version>5.0.0.Alpha2</version>

           </dependency>

 

           <!-- https://mvnrepository.com/artifact/org.jboss.marshalling/jboss-marshalling -->

           <dependency>

                 <groupId>org.jboss.marshalling</groupId>

                 <artifactId>jboss-marshalling</artifactId>

                 <version>1.3.19.GA</version>

           </dependency>

           <!-- https://mvnrepository.com/artifact/org.jboss.marshalling/jboss-marshalling-serial -->

           <dependency>

                 <groupId>org.jboss.marshalling</groupId>

                 <artifactId>jboss-marshalling-serial</artifactId>

                 <version>1.3.18.GA</version>

                 <scope>test</scope>

           </dependency>

 

      </dependencies>

创建服务器端

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<SocketChannel>() {

                       @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();

    

     }

 

}

 

 

 

创建客户端

class ClientHandler extends ChannelHandlerAdapter {

 

     /**

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

      */

     @Override

     publicvoid channelRead(ChannelHandlerContext ctx, Object msgthrows Exception {

         // 接收数据

         String value = (String) msg;

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

     }

 

    

}

 

publicclass NettyClient {

 

     publicstaticvoid main(String[] argsthrows InterruptedException {

         System.out.println("客户端已经启动....");

         // 创建负责接收客户端连接

         NioEventLoopGroup pGroup = new NioEventLoopGroup();

         Bootstrap b = new Bootstrap();

         b.group(pGroup).channel(NioSocketChannel.class).handler(new ChannelInitializer<SocketChannel>() {

              @Override

              protectedvoid initChannel(SocketChannel scthrows Exception {

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

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

              }

         });

         ChannelFuture cf = b.connect("127.0.0.1", 8080).sync();

          cf.channel().writeAndFlush(Unpooled.wrappedBuffer("itmayiedu".getBytes()));

          cf.channel().writeAndFlush(Unpooled.wrappedBuffer("itmayiedu".getBytes()));

         // 等待客户端端口号关闭

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

         pGroup.shutdownGracefully();

 

     }

 

}

 

 

 

zbb20180930 java,nio,netty Netty5.0用法

标签:except   public   oid   ora   may   err   alpha   设置   order   

原文地址:https://www.cnblogs.com/super-admin/p/9733030.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!