一,服务启动项Bootstrap和ServerBootstrap
Bootstrap是引导启动的意思,一个Netty应用程序通常由一个Bootstrap开始,主要主要作用是配置整个Netty程序,串联各个组件,Netty中Bootstrap类是客户端程序的启动引导配置类,ServerBootstrap是服务器的启动引导配置类
一,AbstractBootstrap抽象类
ServerBootstrap和Bootstrap继承了同一个父类AbstractBootstrap
: Undefined array key "dark" in /www/wwwroot/wql_luoqin_ltd/wp-content/themes/Sakura/functions.php on line 694
class="post-template-default single single-post postid-1232 single-format-standard wp-custom-logo chinese-font ">
发布于 2021-06-13 631 次阅读
Bootstrap是引导启动的意思,一个Netty应用程序通常由一个Bootstrap开始,主要主要作用是配置整个Netty程序,串联各个组件,Netty中Bootstrap类是客户端程序的启动引导配置类,ServerBootstrap是服务器的启动引导配置类
ServerBootstrap和Bootstrap继承了同一个父类AbstractBootstrap
修饰符和类型 | 方法和描述 |
---|---|
<T> B |
attr(AttributeKey<T> key, T value)
允许指定新创建的
通道 的初始属性。 |
ChannelFuture |
bind()
创建一个新
通道 并绑定它。 |
ChannelFuture |
bind(InetAddress inetHost, int inetPort)
创建一个新
通道 并绑定它。 |
ChannelFuture |
bind(int inetPort)
创建一个新
通道 并绑定它。 |
ChannelFuture |
bind(SocketAddress localAddress)
创建一个新
通道 并绑定它。 |
ChannelFuture |
bind(String inetHost, int inetPort)
创建一个新
通道 并绑定它。 |
B |
channel(Class<? extends C> channelClass)
|
B |
channelFactory(ChannelFactory<? extends C> channelFactory)
荒废的。 |
B |
channelFactory(ChannelFactory<? extends C> channelFactory)
|
abstract B |
clone()
返回具有相同配置的此引导的深克隆。
|
abstract AbstractBootstrapConfig<B,C> |
config()
返回可用于获取引导器当前配置的
抽象启动组合 对象。 |
EventLoopGroup |
group()
荒废的。 请改为使用
配置( ) 。 |
B |
group(EventLoopGroup group)
|
B |
handler(ChannelHandler handler)
用于服务请求的
通道手 。 |
B |
localAddress(InetAddress inetHost, int inetPort) |
B |
localAddress(int inetPort) |
B |
localAddress(SocketAddress localAddress)
用于将本地"结束"绑定到的
插座地址 。 |
B |
localAddress(String inetHost, int inetPort) |
<T> B |
option(ChannelOption<T> option, T value)
|
ChannelFuture |
register()
|
String |
toString() |
B |
validate()
验证所有参数。
|
修饰符和类型 | 方法和描述 |
---|---|
<T> ServerBootstrap |
childAttr(AttributeKey<T> childKey, T value)
|
EventLoopGroup |
childGroup()
荒废的。 请改为使用
配置( ) 。 |
ServerBootstrap |
childHandler(ChannelHandler childHandler)
|
<T> ServerBootstrap |
childOption(ChannelOption<T> childOption, T value)
|
ServerBootstrap |
clone()
返回具有相同配置的此引导的深克隆。
|
ServerBootstrapConfig |
config()
返回可用于获取引导器当前配置的
抽象启动组合 对象。 |
ServerBootstrap |
group(EventLoopGroup group)
指定用于父(接受者)和孩子(客户端)
的事件循环组 。 |
ServerBootstrap |
group(EventLoopGroup parentGroup, EventLoopGroup childGroup)
为家长(接受者)和孩子(客户端)设置
事件循环组 。 |
ServerBootstrap |
validate()
验证所有参数。
|
修饰符和类型 | 方法和描述 |
---|---|
Bootstrap |
clone()
返回具有相同配置的此引导的深克隆。
|
Bootstrap |
clone(EventLoopGroup group)
返回此引导程序的深克隆,其配置相同,但使用给定
事件循环组 。 |
BootstrapConfig |
config()
返回可用于获取引导器当前配置的
抽象启动组合 对象。 |
ChannelFuture |
connect()
将
通道 连接到远程对等项。 |
ChannelFuture |
connect(InetAddress inetHost, int inetPort)
将
通道 连接到远程对等项。 |
ChannelFuture |
connect(SocketAddress remoteAddress)
将
通道 连接到远程对等项。 |
ChannelFuture |
connect(SocketAddress remoteAddress, SocketAddress localAddress)
将
通道 连接到远程对等项。 |
ChannelFuture |
connect(String inetHost, int inetPort)
将
通道 连接到远程对等项。 |
Bootstrap |
remoteAddress(InetAddress inetHost, int inetPort) |
Bootstrap |
remoteAddress(SocketAddress remoteAddress)
|
Bootstrap |
remoteAddress(String inetHost, int inetPort) |
Bootstrap |
resolver(AddressResolverGroup<?> resolver)
设置
名称解体 ,这将解决未解决的命名地址的地址。 |
Bootstrap |
validate()
验证所有参数。
|
Channel的作用:
1)Netty的通信组件中,Channel能够用于执行网络IO操作
2)通过Channel可获得当前网络连接的通道状态
3)通过Channel可获得网络连接的配置参数,例如:缓冲区的大小,Pipline对象
4)Channel还提供异步的网络IO操作(如:建立连接,绑定端口,读写),异步调用意味着任何调用都将立即返回,并且不保证在调用时所请求的IO操作的完成
5)调用立即返回一个ChannelFture实类对象,通过注册监听到ChannelFuture上,可以IO操作成功,失败或者取消回调通知调用方
6)支持关联IO操作与处理抽象
不同协议,不同堵塞类型的连接都有不同的Channel类型与之应
常见的Channel类型有:
netty中的Handler都是ChannnelHandler的子接口或者子类
1)channelHandler是一个接口,处理I/O事件或者拦截I/O操作,并将其转发到其ChannelPipeline(业务处理链)中
2)ChannelHandler本身并没有提供很多方法,因为这个接口有许多的子接口和子类实现,它的子接口和子类很多
ChannelInboundHandler:用于处理入站I/O事件
ChannelOutboundHandler:用于处理出站的I/O事件
适配器:
修饰符和类型 | 方法和描述 |
---|---|
void |
channelActive(ChannelHandlerContext ctx)
|
void |
channelInactive(ChannelHandlerContext ctx)
|
void |
channelRead(ChannelHandlerContext ctx, Object msg)
|
void |
channelReadComplete(ChannelHandlerContext ctx)
|
void |
channelRegistered(ChannelHandlerContext ctx)
|
void |
channelUnregistered(ChannelHandlerContext ctx)
|
void |
channelWritabilityChanged(ChannelHandlerContext ctx)
|
void |
exceptionCaught(ChannelHandlerContext ctx, Throwable cause)
|
void |
userEventTriggered(ChannelHandlerContext ctx, Object evt)
|
1)ChannelPipeline是一个Handler的集合,它负责处理和拦截inbound或者outbound的事件和操作,相当于一个贯穿Netty的链(也可以理解ChannelPipeline是保存ChannelHandler的List,用于处理或者拦截Channel的入站事件和出站操作)
2)ChannelPipeline实现了一种高级形式的拦截过滤器模式,使用户可以完全控制事件的处理方式,以及Channel中各个的ChannelHandler如何交互
3)在Netty中每一个Channel都有且仅有一个ChannelPipeline与之对应,它组成的关系如下:
基本概念:
1,EventLoopGroup是一组EventLoop的抽象,Netty为了更好的利用多核CPU资源,一般有多个EventLoop同时工作,每一个EventLoop都维护了一个Selector对象实例
2,EventLoopGroup包含了一组EventLoop,它提供了Next接口,可以按照一定规则从组中获取一个EventLoop来处理任务,在Netty服务器架构中一般提供两给EventLoopGroup,例如:BossEventLoopGroup和WorkerEventLoopGroup
3,通常一个服务端口即一个ServerSocketChannel对应一个Selector和一个EventLoop线程,BossEventLoopGroup负责接收客户端的连接并将SocketChannel交给WorkerEventLoopGroup进行IO处理
修饰符和类型 | 方法和描述 |
---|---|
EventLoop |
next()
返回下一
个事件循环 使用 |
ChannelFuture |
register(Channel channel)
|
ChannelFuture |
register(Channel channel, ChannelPromise promise)
荒废的。 改为使用
注册(渠道承诺)。 |
ChannelFuture |
register(ChannelPromise promise)
|
修饰符和类型 | 方法和描述 |
---|---|
static ByteBuf |
buffer()
创建一个新的大端爪哇堆缓冲器,初始容量相当小,可无限地按需扩展其容量。
|
static ByteBuf |
buffer(int initialCapacity)
创建一个新的大端爪哇堆缓冲器与指定的,它无限地扩大其容量的需求。
capacity |
static ByteBuf |
buffer(int initialCapacity, int maxCapacity)
创建一个新的大端爪哇堆缓冲区与指定的,可能成长为新的缓冲区和是。
initialCapacity maxCapacity readerIndex writerIndex 0 |
static CompositeByteBuf |
compositeBuffer()
返回一个新的大端复合缓冲区,没有组件。
|
static CompositeByteBuf |
compositeBuffer(int maxNumComponents)
返回一个新的大端复合缓冲区,没有组件。
|
static ByteBuf |
copiedBuffer(byte[]... arrays)
创建一个新的大端缓冲区,其内容是指定的合并副本。
arrays |
static ByteBuf |
copiedBuffer(byte[] array)
创建一个新的大端缓冲区,其内容是指定的副本。
array |
static ByteBuf |
copiedBuffer(byte[] array, int offset, int length)
创建一个新的大端缓冲区,其内容是指定子区域的副本。
array |
static ByteBuf |
copiedBuffer(ByteBuf... buffers)
创建一个新的缓冲区,其内容是指定的"可读字节"的合并副本。
buffers |
static ByteBuf |
copiedBuffer(ByteBuf buffer)
创建一个新的缓冲区,其内容是指定的可读字节的副本。
buffer |
static ByteBuf |
copiedBuffer(ByteBuffer... buffers)
创建一个新的缓冲区,其内容是指定"切片"的合并副本。
buffers |
static ByteBuf |
copiedBuffer(ByteBuffer buffer)
创建一个新的缓冲区,其内容是指定当前切片的副本。
buffer |
static ByteBuf |
copiedBuffer(char[] array, Charset charset)
创建一个新的大端缓冲区,其内容在指定的编码中指定。
array charset |
static ByteBuf |
copiedBuffer(char[] array, int offset, int length, Charset charset)
创建一个新的大端缓冲区,其内容是指定编码的子区域。
array charset |
static ByteBuf |
copiedBuffer(CharSequence string, Charset charset)
创建一个新的大端缓冲区,其内容在指定的编码中指定。
string charset |
static ByteBuf |
copiedBuffer(CharSequence string, int offset, int length, Charset charset)
创建一个新的大端缓冲区,其内容是指定编码的子区域。
string charset |
static ByteBuf |
copyBoolean(boolean... values)
创建一个新的大端缓冲区,该缓冲区可容纳指定的布尔值序列。
|
static ByteBuf |
copyBoolean(boolean value)
创建一个新的单节大端缓冲区,该缓冲区具有指定的布尔值。
|
static ByteBuf |
copyDouble(double... values)
创建一个新的大端缓冲区,该缓冲区可容纳指定的 64 位浮动点数序列。
|
static ByteBuf |
copyDouble(double value)
创建一个新的 8 节大端缓冲区,该缓冲区保留指定的 64 位浮动点编号。
|
static ByteBuf |
copyFloat(float... values)
创建一个新的大端缓冲区,该缓冲区保留指定的 32 位浮动点数的序列。
|
Comments | NOTHING
Warning: Undefined variable $return_smiles in /www/wwwroot/wql_luoqin_ltd/wp-content/themes/Sakura/functions.php on line 1109