首页 > Web开发 > 详细

Netty详解

时间:2020-09-30 10:36:44      阅读:53      评论:0      收藏:0      [点我收藏+]
public class Server {
    public static void main(String[] args) throws InterruptedException {
        // 1. Netty服务器的引导类
        ServerBootstrap serverBootstrap = new ServerBootstrap();
        // 2. 声明此次通信所用的Channel
        serverBootstrap.channel(NioServerSocketChannel.class);
        // 3. 用于逻辑控制的(这是开发人员主要做的事)
        serverBootstrap.handler(new LoggingHandler(LogLevel.INFO));
        // 4. 相当于是线程池,内部维护一组线程,每个线程处理多个Channel上的事件(Channel仅对应一个线程)
        NioEventLoopGroup group = new NioEventLoopGroup();
        try{
            serverBootstrap.group(group);
            // 5. handler在服务器初始化就会执行,childHandler会在客户端成功connect后才执行(服务器端特有)
            serverBootstrap.childHandler(new ChannelInitializer<NioSocketChannel>() {
                @Override
                protected void initChannel(NioSocketChannel ch) throws Exception {
                    // 5.1 Netty中的事件传播机制以及数据的过滤、写出都是由其负责
                    //① pipeline在创建Channel的时候被创建
                    //② pipeline节点数据结构:ChannelHandlerContext的双向链表
                    //③ pipeline中的两大哨兵:head和tail
                    ChannelPipeline pipeline = ch.pipeline();
                    pipeline.addLast(new OrderFrameDecoder());
                    pipeline.addLast(new OrderFrameEncoder());
                    pipeline.addLast(new OrderProtocolEncoder());
                    pipeline.addLast(new OrderProtocolDecoder());
                    pipeline.addLast(new LoggingHandler(LogLevel.INFO));
                    pipeline.addLast(new OrderServerProcessHandler());
                }
            });
            ChannelFuture channelFuture = serverBootstrap.bind(8090).sync();
            channelFuture.channel().closeFuture().sync();
        } finally {
            group.shutdownGracefully();
        }
    }
}

Netty详解

原文:https://www.cnblogs.com/lin-/p/13753146.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!