首页 > 编程语言 >Netty网络编程-服务端启动

Netty网络编程-服务端启动

时间:2022-08-27 16:57:13浏览次数:55  
标签:Netty workGroup 编程 SocketChannel 设置 new port 服务端

1、Netty的Handler模型

img

2、服务端代码示例

根据模型图可以更好的理解ServerBootstrap引导类设置Netty的属性。

public class TimeServer {
    private int port;
    public TimeServer(int port) {
        this.port = port;
    }
    public void run() throws Exception {
        EventLoopGroup bossGroup = new NioEventLoopGroup();
        EventLoopGroup workGroup = new NioEventLoopGroup();
        try {
            ServerBootstrap b = new ServerBootstrap();
            b.group(bossGroup,workGroup)
                    //设置使用的使用的Channel类
                    .channel(NioServerSocketChannel.class)
                    //设置NioServerSocketChannel的Pipeline的Handler
                    .handler(null)
                    // 用于设置ServerChannel的选项,如:NioServerSocketChanne,来监听和接收connection。作用于当bind() 时。
                    .option(ChannelOption.SO_BACKLOG, 128)
                    //设置NioServerSocketChannel 附带的属性
                    //.attr()
                    //用于设置SocketChannel,作用于connection成功后channel的I/O操作。
                    .childOption(ChannelOption.SO_KEEPALIVE, true)
                    //设置SocketChannel 附带的属性
                    //.childAttr()
                    //设置连接SocketChannel的的handler
                    .childHandler(new ChannelInitializer<SocketChannel>() {
                        @Override
                        protected void initChannel(SocketChannel socketChannel) throws Exception {
                            socketChannel.pipeline().addLast(new TimeServerHandler());
                        }
                    });
            ChannelFuture f = b.bind(port).sync();
            f.addListener((ChannelFutureListener) future -> System.out.println("服务启动完毕"));
            f.channel().closeFuture().sync();
        } finally {
          workGroup.shutdownGracefully();
          bossGroup.shutdownGracefully();
        }
    }
}

标签:Netty,workGroup,编程,SocketChannel,设置,new,port,服务端
From: https://www.cnblogs.com/Nilekai/p/16630875.html

相关文章

  • 尚硅谷-Netty篇
    学习内容P1P43,P110P116,中间章节好枯燥啊,暂时用不到,先跳过了IO模型参考:https://blog.csdn.net/lzb348110175/article/details/98941378学习链接:https://www.bilibili.co......
  • Go并发编程实战 pdf
    高清扫描版下载链接:https://pan.baidu.com/s/1YJh-LYhg-Eb4nPtwPDqusQ点击这里获取提取码本书首先介绍了Go语言的优秀特性、安装设置方法、工程结构、标准命令和工具、语......
  • JavaSE-Day02-面向对象编程
    面向对象编程OOP面向对象和面向过程对于描述复杂的事务,从宏观上需要面向对象的思路,具体到微观,仍然需要面向过程的思路面向过程——第一步做什么,第二部做什么......面......
  • JUC并发编程进阶!!
    目录1.知识点回顾及延伸2.生产者消费者问题3.八锁问题4.集合类线程不安全解决5.Callable再理解6.三大常用辅助类6.1、CountDownLatch6.2、CyclicBarrier6.3、Semaphore7.......
  • 美团秋招笔试四道编程题(第一场)
    第一题小美是美团的一名鲜花快递员,鲜花是一种保质期非常短的商品,所以需要尽快送到客户手中,公司对于骑手的一个要求就是要规划送花的线路,使得骑手送完所有订单走的路程尽可......
  • 客户端连接服务端访问远程配置
    新建一个springcloud-config-client-3355模块:导入config依赖:  配置文件yml: 写ConfigClientController.java 访问profiles中dev环境设置的端口8201 ......
  • HCIA-datacom 8.1 网络编程与自动化基础
    前言:把今天的python讲完,我们的所有HCIA-datacom的实验就做完了,但是这就够了吗?不够的,我们还需要做一个综合实验。但是综合实验,我就不会像前面讲解的这么细致了,因为如果你不......
  • 链式编程的总结以及在生产环境的应用
    链式编程是将多个操作通过点号"."链接在一起成为一个整体,从而更加的简洁方便。链式编程的原理就是每个操作完成后都会返回一个this对象,也就是返回对象本身!在生产实际环境的......
  • 斯坦福CS107 编程范式07
    探索,使用栈的定义,定义一个通用类型的栈来存储一系列的字符串,并把它们以相反的顺序打印出来。 typedefstruct{void*elems;intelemSize;intloglength......
  • 混合编程:如何用pybind11调用C++
    摘要:在实际开发过程中,免不了涉及到混合编程,比如,对于python这种脚本语言,性能还是有限的,在一些对性能要求高的情景下面,还是需要使用c/c++来完成。本文分享自华为云社区《混......