以下是一个简单的Netty框架使用教程:
- 引入Netty依赖:在Maven项目中,需要在pom.xml文件中添加以下依赖:
<dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.65.Final</version> </dependency>
- 编写Netty服务器代码:以下是一个简单的Netty服务器示例代码,它监听8080端口并返回"Hello World"字符串。
import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioServerSocketChannel; public class NettyServer { public static void main(String[] args) throws Exception { // 创建主线程组和工作线程组 EventLoopGroup bossGroup = new NioEventLoopGroup(); EventLoopGroup workerGroup = new NioEventLoopGroup(); try { // 创建Netty服务器启动器 ServerBootstrap serverBootstrap = new ServerBootstrap(); serverBootstrap.group(bossGroup, workerGroup) // 指定通道类型 .channel(NioServerSocketChannel.class) // 设置服务器监听端口号 .localAddress(8080) // 添加处理器 .childHandler(new NettyServerInitializer()); // 启动服务器并监听端口 serverBootstrap.bind().sync().channel().closeFuture().sync(); } finally { // 关闭主线程组和工作线程组 bossGroup.shutdownGracefully(); workerGroup.shutdownGracefully(); } } }
- 编写Netty服务器处理器:Netty服务器处理器用于处理客户端请求并返回响应。以下是一个简单的Netty服务器处理器示例代码,它返回"Hello World"字符串。
import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; import io.netty.util.CharsetUtil; public class NettyServerHandler extends ChannelInboundHandlerAdapter { @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { // 读取请求数据 ByteBuf in = (ByteBuf) msg; String request = in.toString(CharsetUtil.UTF_8); // 打印请求信息 System.out.println("Received request: " + request); // 返回响应数据 ctx.writeAndFlush("Hello World"); } @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { // 发生异常时关闭连接 cause.printStackTrace(); ctx.close(); } }
- 编写Netty服务器处理器初始化器:Netty服务器处理器初始化器用于初始化Netty服务器处理器。以下是一个简单的Netty服务器处理器初始化器示例代码,它将Netty服务器处理器添加到处理器链中。
import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelPipeline; import io.netty.channel.socket.SocketChannel; public class NettyServerInitializer extends ChannelInitializer<SocketChannel> { @Override protected void initChannel(SocketChannel ch) throws Exception { ChannelPipeline pipeline = ch.pipeline(); // 添加处理器 pipeline.addLast(new NettyServerHandler()); } }
- 运行Netty服务器:运行Netty服务器代码,启动Netty服务器并监听8080端口。可以使用浏览器或者curl命令访问http://localhost:8080,应该可以看到"Hello World"字符串。 以上是一个简单的Netty框架使用教程,可以根据实际需求进行修改和扩展。
评论