public interface Channel extends AttributeMap, ChannelOutboundInvoker, java.lang.Comparable<Channel>
一个频道为用户提供:
ChannelPipeline 。 Netty中的所有I / O操作都是异步的。 这意味着任何I / O调用都将立即返回,不保证在呼叫结束时所请求的I / O操作已完成。 相反,您将返回一个ChannelFuture实例,该实例将在请求的I / O操作成功,失败或取消时通知您。
一个Channel可以有一个parent取决于它是如何创建的。 例如,被ServerSocketChannel接受的SocketChannel将返回parent()作为其母公司的ServerSocketChannel 。
层次结构的语义取决于Channel所属的传输实现。 例如,您可以编写一个新的Channel实现,创建共享一个套接字连接的子通道,如BEEP和SSH 。
一些运输公开了特定于运输的额外操作。 将Channel向下转换为子类型以调用此类操作。 例如,对于旧的I / O数据报传输,多播加入/离开操作由DatagramChannel提供。
它打电话是重要ChannelOutboundInvoker.close()或ChannelOutboundInvoker.close(ChannelPromise)释放所有资源,一旦你与完成Channel 。 这确保所有资源都以适当的方式释放,即文件句柄。
| Modifier and Type | Interface and Description |
|---|---|
static interface |
Channel.Unsafe
不应该从用户代码调用的
不安全操作。
|
| Modifier and Type | Method and Description |
|---|---|
ByteBufAllocator |
alloc()
返回分配的 ByteBufAllocator这将被用于分配ByteBuf秒。
|
long |
bytesBeforeUnwritable()
获取可以写入多少个字节,直到
isWritable()返回
false 。
|
long |
bytesBeforeWritable()
|
ChannelFuture |
closeFuture()
返回此通道关闭时将通知的 ChannelFuture 。
|
ChannelConfig |
config()
返回此频道的配置。
|
EventLoop |
eventLoop()
|
Channel |
flush()
请求通过此ChannelOutboundInvoker清除所有未决消息。
|
ChannelId |
id()
返回此 Channel的全局唯一标识符。
|
boolean |
isActive()
如果 Channel处于活动状态并已连接,则返回true 。
|
boolean |
isOpen()
如果 Channel已打开并且稍后可能会激活,则返回true
|
boolean |
isRegistered()
|
boolean |
isWritable()
当且仅当I / O线程将立即执行请求的写入操作时返回
true 。
|
java.net.SocketAddress |
localAddress()
返回此通道绑定的本地地址。
|
ChannelMetadata |
metadata()
返回 ChannelMetadata的的Channel其描述的性质Channel 。
|
Channel |
parent()
返回此频道的父级。
|
ChannelPipeline |
pipeline()
返回分配的 ChannelPipeline 。
|
Channel |
read()
请求来读取数据 Channel进入第一入缓冲区,触发ChannelInboundHandler.channelRead(ChannelHandlerContext, Object)如果数据读取事件,并触发channelReadComplete事件,这样的处理可以决定继续读书。
|
java.net.SocketAddress |
remoteAddress()
返回此通道连接到的远程地址。
|
Channel.Unsafe |
unsafe()
返回提供不安全操作
的仅供内部使用的对象。
|
attr, hasAttrbind, bind, close, close, connect, connect, connect, connect, deregister, deregister, disconnect, disconnect, newFailedFuture, newProgressivePromise, newPromise, newSucceededFuture, voidPromise, write, write, writeAndFlush, writeAndFlushEventLoop eventLoop()
Channel parent()
null如果此频道没有父频道。
ChannelConfig config()
boolean isOpen()
Channel已打开并且稍后可能会激活,则返回true
boolean isRegistered()
boolean isActive()
Channel处于活动状态并已连接,则返回true 。
ChannelMetadata metadata()
ChannelMetadata的的Channel其描述的性质Channel 。
java.net.SocketAddress localAddress()
SocketAddress应该被下调为更具体的类型,例如InetSocketAddress以检索详细信息。
null如果这个频道没有绑定。
java.net.SocketAddress remoteAddress()
SocketAddress应该被缩减为更具体的类型,例如InetSocketAddress以检索详细信息。
null如果此通道未连接。
如果此通道未连接,但它可以接收来自任意远程地址的消息(例如DatagramChannel ,请使用DefaultAddressedEnvelope.recipient()来确定接收消息的来源,因为此方法将返回null 。
ChannelFuture closeFuture()
ChannelFuture 。
此方法始终返回相同的未来实例。
boolean isWritable()
true 。
当此方法返回false时发出的任何写请求false排队,直到I / O线程准备好处理排队的写请求为止。
long bytesBeforeUnwritable()
long bytesBeforeWritable()
Channel.Unsafe unsafe()
ChannelPipeline pipeline()
ChannelPipeline 。
ByteBufAllocator alloc()
ByteBufAllocator这将被用于分配ByteBuf秒。
Channel read()
ChannelOutboundInvoker
Channel进入第一入缓冲区,触发ChannelInboundHandler.channelRead(ChannelHandlerContext, Object)如果数据读取事件,并触发channelReadComplete事件,这样的处理可以决定继续读书。
如果已经有待处理的读取操作,则此方法不执行任何操作。
这将导致在具有ChannelOutboundHandler.read(ChannelHandlerContext)方法称为下一个的ChannelOutboundHandler包含在ChannelPipeline的的Channel 。
read在界面
ChannelOutboundInvoker
Channel flush()
ChannelOutboundInvoker
flush在界面
ChannelOutboundInvoker
Copyright © 2008–2018 The Netty Project. All rights reserved.