netty学习 -- Channel

本文详细介绍了Netty中的Channel,包括write()方法、ChannelFuture的sync()和addListener()方法的使用,以及closeFuture()的关闭操作。通过示例展示了write()方法仅写入缓冲区未真正发送数据,而writeAndFlush()则能确保数据发送。同时,解释了sync()用于同步等待连接建立,保证数据正确发送,以及如何通过addListener()添加回调执行发送数据。最后讨论了同步和异步关闭Channel的方式。

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

Channel

channel的主要作用

  • close()关闭channel
  • closeFuture()来处理channel的关闭
  • sync()方法等待异步就结束
  • addListener()方法增加回调操作
  • pipeline()方法添加处理器
  • write()方法写入
  • writeAndFlush()方法将数据写入并刷出

write()

HelloServer 服务端

@Slf4j(topic = "w.Test1")
public class HelloServer {
   
    public static void main(String[] args) {
   
        // 创建启动器
        new ServerBootstrap()
                // 创建EventLoop事件监听处理组
                .group(new NioEventLoopGroup())
                // 设置ServerSocketChannel的实现NioServerSocketChannel
                .channel(NioServerSocketChannel.class)
                // 设置处理器
                .childHandler(new ChannelInitializer<NioSocketChannel>() {
   
                    @Override
                    protected void initChannel(NioSocketChannel ch) throws Exception {
   
                        // 添加处理工序 处理stringBuf为字符串
                        ch.pipeline().addLast(new StringDecoder());
                        // 自定义处理器
                        ch.pipeline().addLast(new ChannelInboundHandlerAdapter() {
   
                            // 监听读时间
                            @Override
                            public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
   
                                // 打印上一步转换好的字符串
                                log.debug((String) msg);
                            }
                        });
                    }
                }).bind(8080); // 绑定的监听端口
    }
}

HelloClient 客户端

@Slf4j(topic = "w.Test1")
public class HelloClient {
   
    public static void 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值