netty 入门

netty简介:

Netty是基于Java NIO client-server的网络应用框架,使用Netty可以快速开发网络应用,例如服务器和客户端协议。Netty提供了一种新的方式来开发网络应用程序,这种新的方式使它很容易使用和具有很强的扩展性。Netty的内部实现是很复杂的,但是Netty提供了简单易用的API从网络处理代码中解耦业务逻辑。Netty是完全基于NIO实现的,所以整个Netty都是异步的。

网络应用程序通常需要有较高的可扩展性,无论是Netty还是其他的基于Java Nio的框架,都会提供可扩展性的解决方案。Netty中一个关键组成部分是它的异步特性,本片文章将讨论同步(阻塞)和异步(非阻塞)的IO来说明为什么使用异步代码解决扩展性问题以及如何使用异步。

netty原理图:


 

 

netty  编程大致步骤:

服务端代码实现:

package com.***.demo.netty2.server;
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;
import com.***.demo.netty2.common.ObjectDecoder;
import com.***.demo.netty2.common.ObjectEncoder;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;
import io.netty.channel.socket.SocketChannel;
import io.netty.handler.codec.LengthFieldBasedFrameDecoder;
import io.netty.handler.codec.LengthFieldPrepender;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelFutureListener;
import io.netty.channel.ChannelHandlerAdapter;
import io.netty.channel.ChannelHandlerContext;

public class NIOServerbootstrap {
	public static void main(String[] args) throws InterruptedException {
		//1.创建启动引导 
        //netty用于启动NIO服务端的辅助启动类,目的是降低服务端的开发复杂度
		ServerBootstrap sbt=new ServerBootstrap();
		//2.创建两个线程池 分别处理客户端 请求或转发 / SocketChannel的网络读写
		EventLoopGroup boss=new NioEventLoopGroup();
		EventLoopGroup worker=new NioEventLoopGroup();
		//3.关联线程池
		sbt.group(boss, worker);
		//4.指定Socket服务实现类
		sbt.channel(NioServerSocketChannel.class);
        //配置NioServerSocketChannel的TCP参数
        sbt.option(ChannelOption.SO_BACKLOG, 1024);
		//5.初始化通信管道 *  这块是重点,其实吧是绑定I/O事件的处理类childChannelHandler
        //主要用于处理网络I/O事件,例如  记录日志、对消息编解码之类的
		sbt.childHandler(new ServerChannelInitializer());
		//6.绑定端口
		System.out.println("我在9999 监听
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值