尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Netty 的示例

Netty 的示例
📅 发布时间:2026/6/20 3:46:16

1. Netty 示例

1.1. 简单的 Echo 服务器

这里,我们直接使用Netty作为独立的进程启动

1.1.1. Netty 依赖

maven依赖如下:

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

1.1.2. Netty Server

这里我们直接通过Netty监听8080端口,作为服务端启动:

  • EchoServer.java
import com.huawei.athena.netty.handler.EchoServerHandler;
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;
import io.netty.handler.logging.LogLevel;
import io.netty.handler.logging.LoggingHandler;
import lombok.extern.slf4j.Slf4j;import java.util.concurrent.atomic.AtomicBoolean;@Slf4j
public class EchoServer {private final int port = 8080;private EventLoopGroup bossGroup;private EventLoopGroup workerGroup;private ChannelFuture serverChannelFuture;private final AtomicBoolean running = new AtomicBoolean(false);public void start() {if (!running.compareAndSet(false, true)) {log.info("the server is running");return;}// 创建事件循环组bossGroup = new NioEventLoopGroup();  // 用于接受连接workerGroup = new NioEventLoopGroup(); // 用于处理连接try {ServerBootstrap b = new ServerBootstrap();b.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class) // 使用NIO传输通道.option(ChannelOption.SO_BACKLOG, 100).handler(new LoggingHandler(LogLevel.INFO)).childHandler(new ChannelInitializer<SocketChannel>() {@Overridepublic void initChannel(SocketChannel ch) {ch.pipeline().addLast(new EchoServerHandler());}}).option(ChannelOption.SO_BACKLOG, 128)          // 服务器套接字选项.childOption(ChannelOption.SO_KEEPALIVE, true); // 客户端套接字选项// 绑定端口并开始接收连接serverChannelFuture = b.bind(port).sync();log.info("Echo服务器启动,监听端口: {}", port);// 等待服务器套接字关闭} catch (InterruptedException e) {log.error("can't start the netty server, ", e);stop();}}public void stop() {if (!running.compareAndSet(true, false)) {log.info("the server is running");return;}log.info("Shutting down Echo server...");// 先关闭服务器通道if (serverChannelFuture != null) {serverChannelFuture.channel().close().awaitUninterruptibly();}// 优雅关闭EventLoopGroupif (workerGroup != null) {workerGroup.shutdownGracefully();}if (bossGroup != null) {bossGroup.shutdownGracefully();}log.info("Echo server shutdown complete");}
}

1.1.3. 服务端回显处理

这里,我们实现了一个简单的业务逻辑,即收到客户端的数据后,不做任何处理,直接原样发送给客户端:

import io.netty.channel.ChannelHandler.Sharable;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;@Sharable
public class EchoServerHandler extends ChannelInboundHandlerAdapter {@Overridepublic void channelRead(ChannelHandlerContext ctx, Object msg) {ctx.write(msg);}@Overridepublic void channelReadComplete(ChannelHandlerContext ctx) {ctx.flush();}@Overridepublic void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {cause.printStackTrace();ctx.close();}
}

1.1.4. 主程序

public class NettyApp {public static void main(String [] args) {new EchoServer().start();}
}

1.1.5. 验证

服务端启动进程NettyApp后,我们可以通过telnet命令与服务器交互:

telnet localhost 8008

如果一切正常,当你在控制台上输入字符后,你应该能看到它原样的输出,类似如下打印:

12233445566778899

相关新闻

  • 2025年大型一体化净水器制造企业权威推荐榜单:全自动一体化净水器/自来水一体化净水器/自动一体化净水器源头厂家精选
  • 小白必看!AI写论文的实用方法全攻略
  • 初中几何①手拉手模型 +两个相似(一般、等腰、等腰直角、60度角、30度角)三角形 或 矩形 的手拉手模型

最新新闻

  • 麻省理工研究人员打造 Fractal 操作系统,获苹果 M1 芯片新发现
  • React写的WebVR全景看房跳转demo,带贝壳式热点导航和视角控制
  • 2026年郑州脚手架搭建公司推荐:钢管脚手架/盘口脚手架搭建拆除、室内外装修架子搭设、脚手架租赁施工怎么选 - 海棠依旧大
  • 从PHP一句话木马到Webshell大马:攻防原理与实战防御指南
  • BepInEx IL2CPP启动失败:技术原理与完整解决方案指南
  • Elastic 被评为 IDC MarketScape《2026 年全球 SIEM 厂商评估》领导者

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号