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();
            }
        
}
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-12
  • 2022-01-17
  • 2022-12-23
  • 2021-10-29
猜你喜欢
  • 2021-08-02
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-04
  • 2021-12-08
  • 2021-06-06
相关资源
相似解决方案