1. NettyServer端配置
javaIO==>NIO===>Netty
package com.example.demo; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelOption; 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 Server { public static void main(String[] args) throws InterruptedException { //NettyServer端配置流程 //1. 创建boosgroup和workergroup //2. Bossgroup只是负责处理连接请求,真正和客户端处理业务会交给workergro8up完成 EventLoopGroup bossGroup =new NioEventLoopGroup(); EventLoopGroup workerGroup =new NioEventLoopGroup(); //3.配置启动参数, ServerBootstrap bootstrap = new ServerBootstrap(); //4.用链式编程来进行设置 bootstrap.group(bossGroup,workerGroup) //设置两个线程组 .channel(NioServerSocketChannel.class) //使用NioSokectChannel作为服务器的通道实现 .option(ChannelOption.SO_BACKLOG, 128) //设置线程队列到底连接个数 .childOption(ChannelOption.SO_KEEPALIVE, true) //设置保持活动连接状态 .childHandler(new ChannelInitializer<SocketChannel>() { //创建一个通道测试对象(匿名对象) //给pipeline设置处理器 @Override protected void initChannel(SocketChannel ch) throws Exception { ch.pipeline().addLast(null); } }) ;//给workergroup的Eventloop管道设置处理器 System.out.println("。。。。服务器已经准备好"); //5. 绑定一个端口病同步,生成一个channelFuture对象. // 启动服务器,并绑定端口. ChannelFuture cf = bootstrap.bind(6668).sync(); //6.对关闭通道进行监听 cf.channel().closeFuture().sync(); } }
package com.example.demo; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelOption; 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 Server { public static void main(String[] args) throws InterruptedException { //NettyServer端配置流程 //1. 创建boosgroup和workergroup //2. Bossgroup只是负责处理连接请求,真正和客户端处理业务会交给workergro8up完成 EventLoopGroup bossGroup =new NioEventLoopGroup(); EventLoopGroup workerGroup =new NioEventLoopGroup(); try { //3.配置启动参数, ServerBootstrap bootstrap = new ServerBootstrap(); //4.用链式编程来进行设置 bootstrap.group(bossGroup,workerGroup) //设置两个线程组 .channel(NioServerSocketChannel.class) //使用NioSokectChannel作为服务器的通道实现 .option(ChannelOption.SO_BACKLOG, 128) //设置线程队列到底连接个数 .childOption(ChannelOption.SO_KEEPALIVE, true) //设置保持活动连接状态 .childHandler(new ChannelInitializer<SocketChannel>() { //创建一个通道测试对象(匿名对象) //给pipeline设置处理器 @Override protected void initChannel(SocketChannel ch) throws Exception { ch.pipeline().addLast(new NettyClientHandler()); } }) ;//给workergroup的Eventloop管道设置处理器 System.out.println("。。。。服务器已经准备好"); //5. 绑定一个端口病同步,生成一个channelFuture对象. // 启动服务器,并绑定端口. ChannelFuture cf = bootstrap.bind(6668).sync(); //6.对关闭通道进行监听 cf.channel().closeFuture().sync(); } catch (Exception e) { e.printStackTrace(); }finally { bossGroup.shutdownGracefully(); workerGroup.shutdownGracefully(); } }