A nexus to a network socket or a component which is capable of I/O operations such as read, write, connect, and bind.

一个网络套接字或组件的枢纽, 用来进行 I/O 操作, 例如 read, write, connect, bind.

A channel provides a user:

一个Channel的提供给用户的东西有:

  • the current state of the channel (e.g. is it open? is it connected?),
  • channel目前的状态(例如 是否是打开的? 是否是连接的?)
  • the configuration parameters of the channel (e.g. receive buffer size),
  • channel的配置参数(例如接收缓存的大小)
  • the I/O operations that the channel supports (e.g. read, write, connect, and bind), and
  • channel支持的I/O操作(例如 read, write, connect, bind)
  • the ChannelPipeline which handles all I/O events and requests associated with the channel.
  • 一个ChannelPipeline, 这个pipeline用来处理所有的I/O时间和域channel相关的请求

All I/O operations are asynchronous.

所有I/O操作都是异步的

All I/O operations in Netty are asynchronous. It means any I/O calls will return immediately with no guarantee that the requested I/O operation has been completed at the end of the call. Instead, you will be returned with a ChannelFuture instance which will notify you when the requested I/O operation has succeeded, failed, or canceled.

在Netty中所有I/O操作都是异步的. 这意味着任何的IO调用都会立即返回, 但是无法保证在IO调用完成以后,请求的IO操作已经完成了.取而代之的是, 你会被返回一个ChannelFuture实例, 它在请求的IO操作成功, 失败, 取消的时候会通知你.

Channels are hierarchical

Channel是分等级的

A Channel can have a parent depending on how it was created. For instance, a SocketChannel, that was accepted by ServerSocketChannel, will return the ServerSocketChannel as its parent on parent().

一个Channel可以有一个父母, 这取决于他是如何被创建的. 例如, 一个被ServerSocketChannel接受的SocketChannel, 调用它的parent()方法会返回他的父母 -- ServerSocketChannel

The semantics of the hierarchical structure depends on the transport implementation where the Channel belongs to. For example, you could write a new Channel implementation that creates the sub-channels that share one socket connection, as BEEP and SSH do.

分级结构的语义取决于Channel从属的传输实现.例如,你可以写一个新的Channel实现, 它创建一个子channel, 并共享一个socket连接, 就像 BEEP和SSH那样.

Downcast to access transport-specific operations

向下转型来访问特定传输协议操作

Some transports exposes additional operations that is specific to the transport. Down-cast the Channel to sub-type to invoke such operations. For example, with the old I/O datagram transport, multicast join / leave operations are provided by DatagramChannel.

一些传输协议暴露了一些这个协议特有的操作.可以将Channel向下转型为一个子类型来调用这些操作. 例如, 旧的IO数据报传输协议, 组播 join/ leave 操作都是由 DatagramChannel提供的.

Netty Associated -- Channel的更多相关文章

  1. Netty 源码解析(二):Netty 的 Channel

    本文首发于微信公众号[猿灯塔],转载引用请说明出处 接下来的时间灯塔君持续更新Netty系列一共九篇 Netty源码解析(一):开始 当前:Netty 源码解析(二): Netty 的 Channel ...

  2. Netty之Channel*

    Netty之Channel* 本文内容主要参考**<<Netty In Action>> ** 和Netty的文档和源码,偏笔记向. 先简略了解一下ChannelPipelin ...

  3. spark2.1源码分析3:spark-rpc如何实现将netty的Channel隐藏在inbox中

    class TransportServer bootstrap.childHandler(new ChannelInitializer<SocketChannel>() { @Overri ...

  4. spark-rpc是如何实现将netty的Channel隐藏在inbox中的

    class TransportServer bootstrap.childHandler(new ChannelInitializer<SocketChannel>() { @Overri ...

  5. Netty:Channel 建立后消息发送失败

    1. 问题现象 Channel 建立后消息发送失败: ChannelFuture future = DeviceManager.getBootstrap().connect(); deviceChan ...

  6. Netty的Channel

    Channel是一个网络端口连接,或者是可以进行读,写,链接,绑定端口的组件的连接.  Channel就是一个链接,它提供了如下的功能. 1:获取当前链接的状态 2:配置当前链接参数 3:进行read ...

  7. netty笔记-:Channel与ChannelHandlerContext执行write方法的区别

      在netty中有我们一般有两种发送数据的方式,即使用ChannelHandlerContext或者Channel的write方法,这两种方法都能发送数据,那么其有什么区别呢.这儿引用netty文档 ...

  8. Netty:Channel

    上一篇我们通过一个简单的Netty代码了解到了Netty中的核心组件,这一篇我们将围绕核心组件中的Channel来展开学习. Channel的简介 Channel代表着与网络套接字或者能够进行IO操作 ...

  9. 项目系统Netty的Channel和用户之间的关系绑定正确做法,以及Channel通道的安全性方案

    前言 考虑一个功能业务,在web程序中向指定的某个用户进行实时通讯 在Web运用的Socket通讯功能中(如在线客服),为保证点对点通讯.而这个看似简单的根据用户寻到起channel通道实际会碰到不少 ...

随机推荐

  1. DFT,DTFT,DFS,FFT区别

        学习了数字信号处理之后,被里面的几个名词搞的晕头转向,比如DFT,DTFT,DFS,FFT,FT,FS等,FT和FS属于信号与系统课程的内容,是对连续时间信号的处理,这里就不过多讨论,只解释一 ...

  2. 022.Zabbix自定义(邮箱)脚本告警01

    待补充 有需要,请留言!

  3. 005.LVM删除

    一 删除LVM步骤 卸载挂载点 移除LV 移除VG 移除PV 删除配置文件 二 卸载挂载点 [root@kauai ~]# umount /dev/vg01/lv01 #先卸载挂载点 三 移除LV [ ...

  4. 那些年我们踩过的坑之表单reset

    开发者往往是在一个又一个的坑中成长起来的,自学的开发者尤其如此,刚刚填完一个坑,转身又掉进另一个坑.有些坑很容易就跳出来了,也有些坑能整了一天都没头绪,第二天早上一来发现后面就有一架通往坑外的梯子,坑 ...

  5. Web设计快速入门

    在基本顺利完成功能的基础上,就需要考虑美观的问题了,在眼球经济的当下,一个面向用户的产品,如果没有好的UI,那么它就是不合格的.这部分内容算是初出茅庐,会持续更新. "一个人的外貌决定我是否 ...

  6. Python中命名空间与作用域使用总结

    1 引言 命名空间与作用域是程序设计中的基础概念,深入理解有助于理解变量的生命周期,减少代码中的莫名其妙bug.Python的命名空间与作用域与Java.C++等语言有很大差异,若不注意,就可能出现莫 ...

  7. 循序渐进学.Net Core Web Api开发系列【13】:中间件(Middleware)

    系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 本篇介绍如 ...

  8. BZOJ2081 : [Poi2010]Beads

    暴力枚举$k$,对于一个子串,计算它正着的hash值以及反着的hash值,取最小值得到其最终hash值. 对于$k$,一共有$\lfloor\frac{n}{k}\rfloor$个子串,计算出它们的最 ...

  9. spring-boot parent变更为依赖方式

    原parent继承方式 <parent> <groupId>org.springframework.boot</groupId> <artifactId> ...

  10. MikroTik RouterOS安装chr授权到阿里云虚拟机(转)

    CHR介绍 CHR(Cloud Hosted Router) 是用于在虚拟机上运行的 RouterOS 版本,它支持x86_64架构,支持大多数流行的虚拟化技术,如 VMWare, Hyper-V, ...