netty源码-server端绑定端口流程

摘要:
仅用于记录在分析netty源码的日志源码调用关系图NettyServer示例EventLoopGroupboss=newNioEventLoopGroup(1);EventLoopGroupio=newNioEventLoopGroup();ServerBootstrapbootstrap=newServerBootstrap();bootstrap.group(boss,io);bootstra

仅用于记录在分析netty源码的日志

源码调用关系图

netty绑定端口

Netty Server示例

        EventLoopGroup boss = new NioEventLoopGroup(1);
        EventLoopGroup io = new NioEventLoopGroup();
        ServerBootstrap bootstrap = new ServerBootstrap();
        bootstrap.group(boss, io);
        bootstrap.channel(NioServerSocketChannel.class).childHandler(new ChannelInitializer<NioSocketChannel>() {
            @Override
            protected void initChannel(NioSocketChannel ch) throws Exception {

            }
        });
        bootstrap.bind(25001).sync().addListener(new ChannelFutureListener() {
            @Override
            public void operationComplete(ChannelFuture future) throws Exception {
                if (future.isSuccess()) {
                    System.out.println("启动成功");
                } else {
                    future.cause().printStackTrace();
                }
            }
        });

代码执行到bootstrap.bind(25001)时,netty内部的绑定端口如下:

  1. AbstractBootstrap --> bind() --> doBind() --> doBind0()
  2. NioServerSocketChannel的bind方法在父类AbstractChannel类,所以channel的调用关系:AbstractChannel --> bind()
  3. DefaultChannelPipeline --> bind()
  4. AbstractChannelHandlerContext --> bind()
  5. HeadContext --> bind()
  6. AbstractChannel.AbstractUnsafe --> bind(),然后调用AbstractChannel --> doBind(),而他的实现类看下一步
  7. NioServerSocketChannel --> doBind()

免责声明:文章转载自《netty源码-server端绑定端口流程》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇在线考试系统设计思路WinForm 获取指定行列的Value下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MINA、Netty、Twisted一起学(十一):SSL/TLS

什么是SSL/TLS 不使用SSL/TLS的网络通信,一般都是明文传输,网络传输内容在传输过程中很容易被窃听甚至篡改,非常不安全。SSL/TLS协议就是为了解决这些安全问题而设计的。SSL/TLS协议位于TCP/IP协议之上,各个应用层协议之下,使网络传输的内容通过加密算法加密,并且只有服务器和客户端可以加密解密,中间人即使抓到数据包也无法解密获取传输的内...

并发编程(十二)—— Java 线程池 实现原理与源码深度解析 之 submit 方法 (二)

在上一篇《并发编程(十一)—— Java 线程池 实现原理与源码深度解析(一)》中提到了线程池ThreadPoolExecutor的原理以及它的execute方法。这篇文章是接着上一篇文章写的,如果你没有阅读上一篇文章,建议你去读读。本文解析ThreadPoolExecutor#submit。 对于一个任务的执行有时我们不需要它返回结果,但是有我们需要它的...

Android之 看“马达”如何贯通Android系统 (从硬件设计 --&amp;gt; 驱动 --&amp;gt; HAL --&amp;gt; JNI --&amp;gt; Framework --&amp;gt; Application)

在Android 2.3(Gingerbread) 系统的时候,我写过一篇关于“Android 震动马达系统“的文章,当时的Linux内核还是2.6版本的。写那篇文章的目的,是想彻底的了解从硬件到驱动,再到应用的运作流程。完成了之后,文章一直仍在草稿箱里面没发表;今天看到,决定整理一下,重新发表。目的是想和大家分享自己对Android系统的一点认识:以马...

Netty5 HTTP协议栈浅析与实践

一、说在前面的话 前段时间,工作上需要做一个针对视频质量的统计分析系统,各端(PC端、移动端和 WEB端)将视频质量数据放在一个 HTTP 请求中上报到服务器,服务器对数据进行解析、分拣后从不同的维度做实时和离线分析。(ps:这种活儿本该由统计部门去做的,但由于各种原因落在了我头上,具体原因略过不讲……) 先用个“概念图”来描绘下整个系统的...

如果有人问你 Dubbo 中注册中心工作原理,就把这篇文章给他

注册中心作用 开篇首先想思考一个问题,没有注册中心 Dubbo 还能玩下去吗? 当然可以,只要知道服务提供者地址相关信息,消费者配置之后就可以调用。如果只有几个服务,这么玩当然没问题。但是生产服务动辄成千上百,如果每个服务都需要手写配置信息,想象一下是多么麻烦。 好吧,如果上面的问题都不是事的话,试想一下如果一个服务提供者在运行过程中宕机,消费者怎么办?...

ubuntu13.04下载android4.0.1源码过程

最初我参考的是老罗的博客http://blog.csdn.net/luoshengyang/article/details/6559955 进行下载安装的,但弄着弄着就发现不太对劲了。这里记录下详细过程: 1,我的前提是已经搭建好了Android开发环境,也即jdk已经安装好了,输入java -version来检查是否成功。搭建android开发环境可以...