【Netty】入门:客户端发送一个信息到服务器端,服务器端将信息原样返回

本文介绍了Java的四种I/O模型,重点讲解了Netty这一高性能的异步NIO框架,包括如何使用Netty快速搭建服务端和客户端。通过示例展示了如何创建ChannelHandler、ChannelHandlerContext和ChannelPipeline,以及Bootstrap和ServerBootstrap在客户端和服务端的应用。
摘要由CSDN通过智能技术生成
Java的I/O模型

我们知道java的I/O模型一共有四种,分别是:传统的BIO,伪异步I/O,NIO和AIO。
这里写图片描述

关于Netty

  Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。作为当前最流行的NIO框架,Netty在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用,一些业界著名的开源组件也基于Netty的NIO框架构建。

Netty快速搭建第一个服务端和客户端

maven 依赖

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

  我们不需要使每一个inboundChannel继承于ChannelInboundHandler,这样会需要我们实现ChannelInboundHandler中的所有接口,在一般的channel中我们没有必要这样做,这样只会增加我们的额外的工作量,我们只需要继承ChannelInboundHandlerAdapter,继承它的适配就可以了,我们需要实现几个特别重要的方法,例如读取的方法channelRead和异常处理的方法exceptionCaught

src/main/java/com.abloume/Client/Client01Handler.java

package com.abloume.Client;

import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;

public class Client01Handler extends ChannelInboundHandlerAdapter {
   

    @Override
    public void channelActive(ChannelHandlerContext ctx) throws Exception {
        System.out.println("Client01Handler Active");
        ctx.fireChannelActive();  // 若把这一句注释掉将无法将event传递给下一个ClientHandler
}

    @Override
    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
        System.out.println("Client01Handler read Message: "+msg);
    }

    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
        cause.printStackTrace();
        ctx.close();
    }
}

src/main/java/com.abloume/Client/Client02Handler.java

package com.abloume.Client;

import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;

public class Client02Handler extends ChannelInboundHandlerAdapter {
   

    @Override
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值