netty源码-server端绑定端口流程
仅用于记录在分析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内部的绑定端口如下:
AbstractBootstrap --> bind() --> doBind() --> doBind0()
- NioServerSocketChannel的bind方法在父类AbstractChannel类,所以channel的调用关系:
AbstractChannel --> bind()
DefaultChannelPipeline --> bind()
AbstractChannelHandlerContext --> bind()
HeadContext --> bind()
AbstractChannel.AbstractUnsafe --> bind()
,然后调用AbstractChannel --> doBind()
,而他的实现类看下一步NioServerSocketChannel --> doBind()
作者:leeyazhou
出处:https://www.cnblogs.com/leeyazhou/p/12981911.html
版权:本文采用「署名-非商业性使用-相同方式共享 4.0 国际」知识共享许可协议进行许可。
技术交流,互通有无
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】博客园携手 AI 驱动开发工具商 Chat2DB 推出联合终身会员
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 聊一聊 C#异步 任务延续的三种底层玩法
· 敏捷开发:如何高效开每日站会
· 为什么 .NET8线程池 容易引发线程饥饿
· golang自带的死锁检测并非银弹
· 如何做好软件架构师
· 欧阳的2024年终总结,迷茫,重生与失业
· 聊一聊 C#异步 任务延续的三种底层玩法
· 上位机能不能替代PLC呢?
· 2024年终总结:5000 Star,10w 下载量,这是我交出的开源答卷
· .NET Core:架构、特性和优势详解