Netty从入门到精通————实例(一)

本文从一个简单的Netty实例入手,通过创建TestServer、TestServerInitializer和TestServerHandler,介绍如何启动服务并验证其正确运行。通过telnet和浏览器访问,展示HTTP协议的无状态特性和keep-alive机制,解释了为何某些请求会被发送两次,并讨论了Netty服务器如何处理HTTP1.1和HTTP1.0的连接管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习netty先从最简单的实例开始,三个实体类大概是如下图
在这里插入图片描述
首先先创建TestServer实体类

package com.icss.po;

import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.ChannelFuture;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.sctp.nio.NioSctpServerChannel;
import io.netty.channel.socket.nio.NioServerSocketChannel;

public class TestServer {
   
   
    public static  void  main(String[] args) throws  Exception{
   
   
        //事件线程组
        EventLoopGroup bossGroup =  new NioEventLoopGroup();
        EventL
### Netty 入门精通教程 #### 了解Netty及其重要性 Netty个功能强大、灵活且易于使用的网络编程框架[^1]。它不仅简化了TCP/IP协议栈的操作,还提供了丰富的API来处理各种复杂的通信需求。 #### 掌握基本概念 理解Netty中的两个主要事件流对于掌握该工具至关重要: - **Inbound入站事件**:这些事件由Netty内部触发,最终被应用程序代码所消费。这通常涉及接收数据并将其传递给处理器链。 - **Outbound出站事件**:这类事件则相反,它们起源于应用层逻辑,并向远程端发送指令或消息,在此过程中会被Netty接管直至完成传输过程[^2]。 #### 学习核心组件 为了更好地利用Netty的功能,熟悉以下几个关键部分是非常必要的: - **Channel**: 表示个特定客户端连接的状态和配置;它是所有I/O操作的基础单元。 - **EventLoopGroup**: 负责管理组线程池资源用于执行异步任务。 - **ChannelHandler/ChannelPipeline**: 定义了组拦截器样式的处理器,可以用来解码、编码或者修改进出的数据包。 #### 编写第个程序实例 下面给出段简单的Echo服务器代码作为入门练习: ```java import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioServerSocketChannel; public class EchoServer { public static void main(String[] args) throws Exception { EventLoopGroup bossGroup = new NioEventLoopGroup(); EventLoopGroup workerGroup = new NioEventLoopGroup(); try { ServerBootstrap b = new ServerBootstrap(); // (1) b.group(bossGroup, workerGroup) .channel(NioServerSocketChannel.class) // (2) .childHandler(new EchoServerInitializer()); // (3) ChannelFuture f = b.bind(8080).sync(); // (4) System.out.println("Server started and listening on port " + 8080); f.channel().closeFuture().sync(); // (5) } finally { workerGroup.shutdownGracefully(); bossGroup.shutdownGracefully(); } } } ``` 这段代码展示了如何创建个监听指定端口的服务端,并等待来自客户端的消息请求。 #### 进步深入研究 当掌握了基础知识之后,可以通过阅读官方文档深入了解更复杂的话题如性能优化技巧、安全特性集成等。此外,实践项目开发也是提高技能水平的有效途径之
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值