www.zhblog.net

Java Netty 教程

Netty是用于Java的高性能IO工具包。 Netty是开源的,因此可以自由使用它,甚至可以为它做出贡献。该Netty教程将解释Netty的工作方式以及如何开始使用Netty。但本教程不会涵盖Netty的每一个细节。Netty官网Netty网站地址为:https://netty.io/Netty优势 通常,与使用标准Java实现的应用程序相比,Netty使构建可扩展,强大的网络应用程序变得容易得多。 Netty还包含一些特定于操作系统的优化,例如在Linux上使用EPOLL等。Netty工具&n......

Java Netty Echo 程序

使用 Netty 实现的 Echo 程序:客户端发送信息,服务端原样返回。1.服务端package com.learn.netty.echo; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.EventLoopGroup; import io.n......

Java Netty Handler 程序

服务端定义了2个Handler,第一个Handler处理从客户端接收的数据并传递到第二个Handler。第二个Handler输出并返回给客户端。1.服务端package com.learn.netty.handler; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.nett......

Java Netty Codecs 程序

服务端定义了一个Handler和三个Decoder。Handler接收客户端的信息,然后传递给decoder过滤处理。1.服务端package com.learn.netty.codecs; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.Even......

Netty 核心组件

为了了解Netty的工作原理,对Netty的内部设计有一个总体了解是很有用的。几个核心概念:BootstrapEventLoopGroupEventLoopSocketChannelChannelInitializerChannelPipelineChannelHandler这些概念如何相互关联如下所示:BootstrapNetty中的Bootstrap类负责引导,引导过程包括启动线程,打开套接字等。EventLoopGroupNetty EventLoopGroup是EventLoop的分组,多个Even......

Netty 核心: ChannelPipeline

Netty ChannelPipeline是Netty中非常核心的概念。每个SocketChannel包含一个ChannelPipeline。 ChannelPipeline包含ChannelHandler实例的列表。当数据进入和写出SocketChannel时,将调用这些ChannelHandler实例。ChannelHandler接口具有两个子接口:ChannelInboundHandlerChannelOutboundHandler你可以将ChannelInboundHandler和ChannelOu......

Netty TCP Hello 实例

TCP ServerNetty的服务之一是TCP服务。要创建Netty TCP服务,必须: 创建一个EventLoopGroup 创建和配置ServerBootstrap 创建一个ChannelInitializer 启动服务器这是一个代码示例,显示了如何创建Netty TCP服务:EventLoopGroup group = new NioEventLoopGroup(); try{ ServerBootstrap serverBootstrap =......

Netty SSL 验证实例

Netty 官方支持 SSL 验证,并自带有实例代码,下面代码示例基本源自官方 demo:1.服务端package com.learn.netty.ssl; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelOption; impor......

Netty 任务调度

Netty 中也可以进行任务调度。1.60秒后调用一次Channel channel = new LocalChannel(); channel.eventLoop().schedule(() -> { System.out.println("60s!"); }, 60, TimeUnit.SECONDS);2.每隔60秒调用一次ScheduledFuture sf = channel.eventLoop().scheduleAtFixedRate(() -> { Sys......

Netty:测试 Encoder 和 Decoder

最近用了一段时间的Netty,现构建了一个编码器/解码器管道,以测试编码器和解码器在没有发送真实的消息时是否在正常工作。方便的是,Netty 有个 EmbeddedChannel,使测试变得非常轻松。 假设我们有一条消息“ Foo”,我们想通过网络发送。它仅包含一个整数值,因此我们将其发送并在另一侧重建“ Foo”。 我们可以编写以下编码器来执行此操作:public static class MessageEncoder extends MessageToMessageEncoder<Foo......