Netty源码分析系列之四:Netty启动之NioServerSocketChannel创建

本文详细介绍了Netty服务端启动过程中NioServerSocketChannel的创建与初始化步骤,包括端口绑定、Channel的构造和注册过程。涵盖了面试题相关的内容,为Java开发者提供学习资源和面试准备指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

上篇文章中主要对Netty启动过程中,涉及的NioEventLoopGroup相关细节进行了详细介绍,本篇文章主要介绍启动过程中其他一些初始化步骤。

  • Channel的创建和初始化过程

  • 总结

一、Channel的创建和初始化过程


ChannelNetty对于网络实现层的抽象,可以对应于JDK中的NIO包实现,Netty服务端的Channel类型是 NioServerSocketChannel。下面来分析NioServerSocketChannel的创建和初始化。

1、端口绑定

启动过程中重要的操作为绑定端口,而NioServerSocketChannel的创建就是在此过程中进行的。ServerBootStrapbind()方法

ChannelFuture f = b.bind(PORT).sync();

查看对应的源码,实际调用的是AbstractBootstrap类中的bind方法:

public ChannelFuture bind(int inetPort) {

return bind(new InetSocketAddress(inetPort));

}

public ChannelFuture bind(SocketAddress localAddress) {

validate();

return doBind(ObjectUtil.checkNotNull(localAddress, “localAddress”));

}

private ChannelFuture doBind(final SocketAddress localAddress) {

//初始化channel

final ChannelFuture regFuture = initAndRegister();

final Channel channel = regFuture.channel();

if (regFuture.cause() != null) {

return regFuture;

}

//若注册成功,则进行bind操作

if (regFuture.isDone()) {

// At this point we know that the registration was complete and successful.

ChannelPromise promise = channel.newPromise();

doBind0(regFuture, channel, localAddress, promise);</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值