Netty核心原理与基础实战(一)备份

 1 概述

        Netty是一个Java NIO客户端/服务端框架,是一个为了快速开发可维护的高性能、高可扩展的网络服务器和客户端程序而提供的异步事件驱动基础框架和工具。基于Netty,可以快速轻松地开发网络服务器和客户端的应用程序。与直接使用Java NIO相比,Netty给大家造出了一个非常优美的轮子,它可以打打简化网络编程流程。例如,Netty极大地简化了TCP、UDP套接字和HTTP Web服务程序的开发。

        Netty的目标之一是使通信开发可以做到“快读和轻松”。使用Netty,除了能“快速和轻松”地开发TCP/UDP等自定义协议的通信程序之外,还可以做到“快速和轻松”地开发应用层协议的通信程序,如FTP/SMTP/HTTP以及其他的传统应用层协议。

        Netty的目标之二是要做到高性能、高可扩展性。基于Java的NIO,Netty设计了一套优秀的、高性能的Reactor模式实现,并且基于Netty的Reactor模式实现中的Channel(通道)、Handler(处理器)等基础类库能记性快速扩展,以支持不同协议通信、完成不同业务处理的大量应用类。

2 第一个Netty实战案例DiscardServer

        在开发介绍Netty核心原理之前,首先为大家介绍一个非常简单的入门实战案例,这是一个丢弃服务器(DiscardServer)的简单通信案例,起作用类似学习Java基础编程时的“hello,world”程序。在开发编写实战案例之前,首先准备Netty的版本,并且配置好开发环境。

2.1 创建第一个Netty项目

        首先我们需要创建项目(或者模块),取名随意(笔者取名NettyDemos)。第一个Netty的实战案例DiscardServer就在这个项目中进行实战开发。DiscardServer功能很简单:读取客户端的输入数据,直接丢弃,不给客户端任何回复。

        工具版本:JDK 1.8/Netty 4.1.6

        使用Maven导入Netty的依赖坐标到项目,坐标是:

        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
            <version>4.1.6</version>
        </dependency>

2.2 第一个Netty服务器程序

        创建一个服务端类NettyDiscardServer.java,用来实现消息的丢弃功能。

public class NettyDiscardServer {
    private  int serverPort ;
    ServerBootstrap b = new ServerBootstrap();

    public NettyDiscardServer(int serverPort) {
        this.serverPort = serverPort;
    }
    public void runServer(){
        //创建反应器轮询组
        NioEventLoopGroup bossLoopGroup = new NioEventLoopGroup(1);
        NioEventLoopGroup workerLoopGroup = new NioEventLoopGroup();
        try {
            //1.设置反应器轮询组
            b.group(bossLoopGroup,workerLoopGroup);
            //2.设置NIO类型的通道
            b.channel(NioServerSocketChannel.class);
            //3.设置监听端口
            b.localAddress(serverPort);
            //4.设置通道的参数
            b.option(ChannelOption.SO_KEEPALIVE,true);
            //5.装配子通道流水线
            b.childHandler(new ChannelInitializer<SocketChannel>() {
                //有连接到达时会创建一个通道
                protected void initChannel(SocketChannel ch){
                    //流水线的职责:负责管理通道中的处理器
                    //向子通道(传输通道)流水线添加一个处理器
                 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

geminigoth

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值