Netty入门案例

何为Netty?

​ Netty是一个基于NIO的客户端、服务器端的编程框架,用于快速开发可维护、高性能的网络服务器和客户端。Netty具有并发高、传输快、封装好等特点,Netty还可以通便编程自定义各种协议,可通过codec来编码或解码字节流。

入门案例

需求

完成一个简单的服务器端和客户端:

  • 客户端向服务器端发送Hello Netty
  • 服务器端只接收客户端发来的消息

maven

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

服务端

public class NettySever {
    public NettySever(){
        // 创建服务端使用SeverBootstrap 进行创建
        new ServerBootstrap()
                .group(new NioEventLoopGroup()) //创建NioEventLoopGroup事件循环组
                .channel(NioServerSocketChannel.class) //将channel定义为NioSocketChannel
                .childHandler(new ChannelInitializer<NioSocketChannel>() { //添加处理器
                    protected void initChannel(NioSocketChannel ch) {
                        ch.pipeline().addLast(new StringDecoder()); //
                        ch.pipeline().addLast(new SimpleChannelInboundHandler<String>() { 
                           //业务处理器
                            @Override
                            protected void channelRead0(ChannelHandlerContext ctx, String msg) {
                                System.out.println(msg);
                            }
                        });
                    }
                })
                .bind(8080);// 鉴定端口8080
    }
}
class Main{
    public static void main(String[] args) {
        new NettySever();
    }
}

客户端

public NettyClient(String msg) throws InterruptedException {
    // 创建客户端使用 Bootstrap()
        new Bootstrap()
                .group(new NioEventLoopGroup())   //创建NioEventLoopGroup事件循环组
                .channel(NioSocketChannel.class) //将channel定义为NioSocketChannel
                .handler(new ChannelInitializer<Channel>() { //消息通过handler处理
                    @Override
                    protected void initChannel(Channel ch) {
                        ch.pipeline().addLast(new StringEncoder());
                    }
                })
                .connect("127.0.0.1", 8080) //连接服务器的地址
                .sync()	 //设置为同步
                .channel()  //获取channel对象
                .writeAndFlush(new Date() + ":"+msg); //将消息写入缓冲区
    }

    public static void main(String[] args) throws Exception{
        new NettyClient("Hello Netty");
    }
}
实现效果

服务端会获取到来自客户端的消息如图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值