`
01jiangwei01
  • 浏览: 540825 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

netty5 入门翻译

    博客分类:
  • java
 
阅读更多

翻译网页网址:http://netty.io/wiki/user-guide-for-5.x.html

写道
NioEventLoopGroup is a multithreaded event loop that handles I/O operation. Netty provides various EventLoopGroup implementations for different kind of transports. We are implementing a server-side application in this example, and therefore two NioEventLoopGroup will be used. The first one, often called 'boss', accepts an incoming connection. The second one, often called 'worker', handles the traffic of the accepted connection once the boss accepts the connection and registers the accepted connection to the worker. How many Threads are used and how they are mapped to the created Channels depends on the EventLoopGroup implementation and may be even configurable via a constructor.

 翻译:

写道
NioEventLoopGroup是一个多线程事件环路。它用来处理IO操作。Netty为不同类型的传输提供了不同类型的EventLoopGroup的实现类。在这个例子中我们正在做一个简单的服务器端实现,将使用两个NioEventLoopGroup实现类。第一个通常称为boss,它的作用是接收传入的链接。第二个被称为‘worker’,它的作用是一旦boss接受链接并且注册链接到worker则处理这个接收链接的传输。依赖于EventLoopGroup的实现决定多少线程将被使用并且他们如何匹配到新建的channel,当然并且也可以通过构造函数来配置。

 NioEventLoopGroup的实现类可以查看API,http://netty.io/5.0/api/index.html.路径为io.netty.channel.NioEventLoopGroup

 

写道
ServerBootstrap is a helper class that sets up a server. You can set up the server using a Channel directly. However, please note that this is a tedious process, and you do not need to do that in most cases.

   翻译:

 

写道
ServerBootstrap 是一个工具类。用来启动server。我们也可以使用io.netty.channel.Channel直接启动server,这是一个乏味的过程,大多数情况下我们不必这么做。

 

package io.netty.example.discard;

import io.netty.bootstrap.ServerBootstrap;

import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelOption;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioServerSocketChannel;

/**
 * Discards any incoming data.
 */
public class DiscardServer {

    private int port;

    public DiscardServer(int port) {
        this.port = port;
    }

    public void run() throws Exception {
        EventLoopGroup bossGroup = new NioEventLoopGroup(); // (1)
        EventLoopGroup workerGroup = new NioEventLoopGroup();
        try {
            ServerBootstrap b = new ServerBootstrap(); // (2)
            b.group(bossGroup, workerGroup)
             .channel(NioServerSocketChannel.class) // (3)
             .childHandler(new ChannelInitializer<SocketChannel>() { // (4)
                 @Override
                 public void initChannel(SocketChannel ch) throws Exception {
                     ch.pipeline().addLast(new DiscardServerHandler());
                 }
             })
             .option(ChannelOption.SO_BACKLOG, 128)          // (5)
             .childOption(ChannelOption.SO_KEEPALIVE, true); // (6)

            // Bind and start to accept incoming connections.
            ChannelFuture f = b.bind(port).sync(); // (7)

            // Wait until the server socket is closed.
            // In this example, this does not happen, but you can do that to gracefully
            // shut down your server.
            f.channel().closeFuture().sync();
        } finally {
            workerGroup.shutdownGracefully();
            bossGroup.shutdownGracefully();
        }
    }

    public static void main(String[] args) throws Exception {
        int port;
        if (args.length > 0) {
            port = Integer.parseInt(args[0]);
        } else {
            port = 8080;
        }
        new DiscardServer(port).run();
    }
}

  3) 此处我们指明使用NioServerSocketChannel来初始化一个新的Channel来接收传入的连接。

  4)此处指定的处理程序通常被一个新的接收渠道使用。ChannelInitializer类是一个指定的处理程序,他被用来帮助用户配置一个新的渠道。大多数状态下当我们通过添加一些处理器(例如:DiscardServerHandler)来实现我们的网络应用想要配置一个新的渠道的ChannelPipeline时需要这样做。当这个应用程序变的复杂时,例如我们最终将增加更多的处理器到这个管道里并且提取匿名类到定层类时很有用处。

  5)我们可以设置这个参数,参数是用来指定Channel实现的。这里我们是写一个TCP/IP服务器,所以我们允许设置socket选项,例如:tcpNoDelay或者keepAlive。请查看ChannelOption的apidocs文档和指定ChannelConfig实现来浏览一下支持的ChannelOptions。具体网址为:http://netty.io/5.0/api/io/netty/channel/ChannelConfig.html和http://netty.io/5.0/api/io/netty/channel/ChannelOption.html

  6)option() 是针对接收传入链接的NioServerSocketChannel,childOption()是针对被父ServerChannel接收的Channels,此处是NioServerSocketChannel

分享到:
评论

相关推荐

    Netty5用户指南 官方翻译 PDF高清中文版

    Netty5用户指南中的这部分内容是一个全面的入门介绍,它不仅为开发者提供了基础知识,还通过实例帮助开发者了解如何使用Netty框架来开发各种网络应用程序。开发者可以使用Netty来构建服务端和客户端,实现协议逻辑,...

    netty入门例子--(不是翻译官方文档)

    这个“netty入门例子”旨在帮助初学者理解Netty的基本用法和特性,而不是简单地翻译官方文档,它提供了几个开发模板,以便于深入理解Netty中的消息异步通信机制和TCP通信的封装。 首先,Netty的核心是它的异步模型...

    netty开发实战

    Netty 4.x用户指南是一个很好的入门文档,适合初学者阅读,它不仅有中文翻译版本,还提供了源码示例。用户可以通过访问GitHub上的netty-4-user-guide-demos仓库,获取所有例子源码。此外,Netty社区也鼓励用户在发现...

    Netty in Action合集

    对于那些时间有限但想快速了解和掌握Netty核心功能的开发者来说,这是一个理想的入门资源。 通过学习这四本书,读者可以全面了解Netty如何在Java环境中实现高效的网络通信。Netty的异步I/O模型使得它在处理高并发...

    netty用户指南.pdf

    在学习过程中,你可以参考 Netty 4.x 用户指南的中文翻译,包括源码示例和在线阅读版本,方便在国内访问。如果遇到问题或有建议,可以通过 GitHub 仓库提交 issue,或者联系作者。 总之,Netty 是一个强大的网络...

    java开源包3

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    Building-Microservice-by-Surging:传播微服务的理论、技术实现、开源的微服务构建的Sass平台案例

    微服务入门基础书籍翻译 该项目主要为微服务入门基础 并穿插着讲解 (surging 是一个分布式微服务框架,提供高性能RPC远程服务调用,采用Zookeeper、Consul作为surging服务的注册中心,集成了哈希,随机,轮询作为...

    java学习各阶段书籍指南

    1. 《深入理解Java虚拟机》:这本书是学习Java虚拟机(JVM)不可或缺的参考书籍,尽管翻译可能一般,但内容的深度和广度使其成为Java程序员的必读材料。建议至少阅读两遍,最好结合最新的JVM规范。 2. 《Java ...

    java开源包5

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包4

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包7

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    JAVA上百实例源码以及开源项目源代码

    5个目标文件,演示Address EJB的实现 ,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    java开源包1

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包11

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包2

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包6

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包10

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包8

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包9

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

Global site tag (gtag.js) - Google Analytics