Netty是一个基于NIO的客户端、服务器端编程框架,提供异步的、事件驱动的网络应用程序框架和工具,可以快速开发高可用的客户端和服务器。Netty是由JBOSS提供的开源框架,常用于搭建RPC中的TCP服务器、WebSocket服务器,甚至是类似Tomcat的web服务器等。

以下是Netty入门的基本步骤:

  1. 导入Netty依赖:在项目的pom.xml文件中添加Netty的依赖项,例如:

xml<dependency>
 <groupId>io.netty</groupId>
 <artifactId>netty-all</artifactId>
 <version>4.1.65.Final</version>
</dependency>

  1. 创建ServerBootstrap对象:用于引导和配置Netty的服务端程序,例如:

javaEventLoopGroup bossGroup = new NioEventLoopGroup();
EventLoopGroup workerGroup = new NioEventLoopGroup();

try {
   ServerBootstrap serverBootstrap = new ServerBootstrap();
   serverBootstrap.group(bossGroup, workerGroup)
           .channel(NioServerSocketChannel.class)
           .childHandler(new ChannelInitializer<SocketChannel>() {
               @Override
               protected void initChannel(SocketChannel ch) throws Exception {
                   // 添加自定义的ChannelHandler
                   ch.pipeline().addLast(new MyServerHandler());
               }
           });

   // 绑定端口,开始接收进来的连接
   ChannelFuture channelFuture = serverBootstrap.bind(8080).sync();

   // 关闭服务器
   channelFuture.channel().closeFuture().sync();
} finally {
   // 优雅地关闭服务器
   bossGroup.shutdownGracefully();
   workerGroup.shutdownGracefully();
}

  1. 创建ChannelHandler处理器:处理来自客户端的请求或消息,例如:

javapublic class MyServerHandler extends SimpleChannelInboundHandler<Object> {
   @Override
   protected void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception {
       // 处理客户端请求或消息
       String request = (String) msg;
       System.out.println("Received request: " + request);

       // 返回响应给客户端
       String response = "Response to " + request;
       ctx.writeAndFlush(response);
   }
}

  1. 绑定端口并启动服务:通过EventLoopGroup绑定端口并启动服务,例如:

javaChannelFuture channelFuture = serverBootstrap.bind(8080).sync();
channelFuture.channel().closeFuture().sync();