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){
//流水线的职责:负责管理通道中的处理器
//向子通道(传输通道)流水线添加一个处理器

最低0.47元/天 解锁文章
963

被折叠的 条评论
为什么被折叠?



