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

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

源码调用关系图#

netty绑定端口

Netty Server示例#

Copy
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()
posted @   leeyazhou  阅读(1012)  评论(0编辑  收藏  举报
编辑推荐:
· 聊一聊 C#异步 任务延续的三种底层玩法
· 敏捷开发:如何高效开每日站会
· 为什么 .NET8线程池 容易引发线程饥饿
· golang自带的死锁检测并非银弹
· 如何做好软件架构师
阅读排行:
· 欧阳的2024年终总结,迷茫,重生与失业
· 聊一聊 C#异步 任务延续的三种底层玩法
· 上位机能不能替代PLC呢?
· 2024年终总结:5000 Star,10w 下载量,这是我交出的开源答卷
· .NET Core:架构、特性和优势详解
点击右上角即可分享
微信分享提示
目录