API

核心是 Channel

批注 2020-07-06 123702

Channel的方法

方 法 名

描  述

eventLoop

返回分配给 Channel EventLoop

pipeline

返回分配给 Channel ChannelPipeline

isActive

如果 Channel 是活动的,则返回 true 。活动的意义可能依赖于底层的传输。例如,一个 Socket 传输一旦连接到了远程节点便是活动的,而一个 Datagram 传输一旦被打开便是活动的

localAddress

返回本地的 SocketAddress

remoteAddress

返回远程的 SocketAddress

write

将数据写到远程节点。这个数据将被传递给 ChannelPipeline ,并且排队直到它被flush

flush

将之前已写的数据刷新到底层传输,如一个 Socket

writeAndFlush

一个简便的方法,等同于调用 write() 并接着调用 flush()

Channel 是线程安全的

内置的传输

名  称

描  述

NIO

io.netty.channel.socket.nio

使用 java.nio.channels 包作为基础——基于选择器的方式

Epoll [1]

io.netty.channel.epoll

由JNI驱动的 epoll() 和非阻塞IO。这个传输支持只有在Linux上可用的多种特性,如 SO_REUSEPORT ,比NIO传输更快,而且是完全非阻塞的

OIO

io.netty.channel.socket.oio

使用 java.net 包作为基础——使用阻塞流

Local

io.netty.channel.local

可以在VM内部通过管道进行通信的本地传输

Embedded

io.netty.channel.embedded

Embedded传输,允许使用 ChannelHandler 而又不需要一个真正的基于网络的传输。这在测试你的 ChannelHandler 实现时非常有用

  • NIO

批注 2020-07-06 124813

  • Epoll

该传输的语义同NIO 如果要使用该传输 只需要将 EventLoop 中的 NioServerSocketChannel 替换为 EpollServerSocketChannel即可

  • OIO

批注 2020-07-06 125423

  • Local

没有绑定物理网络地址

  • Embedded

可以将一组ChannelHandler 嵌入到 其他 ChannelHandler内部

场景

应用程序的需求

推荐的传输

非阻塞代码库或者一个常规的起点

NIO(或者在Linux上使用epoll)

阻塞代码库

OIO

在同一个JVM内部的通信

Local

测试 ChannelHandler 的实现

Embedded

results matching " "

No results matching " "

results matching " "

No results matching " "