• NIO框架(Netty)


    (一)Netty是什么?what?【一个好使的处理Socket的东西】

    ①是一种基于NIO(同步非阻塞网络编程框架。(本质就是一个Jar架包

    (二)为什么要使用Netty?why?

    目的:①快速开发,高并发,高负载,高可靠性(安全)的网络服务器和客户端程序。

    优点:①提供异步的事件驱动的网络应用程序框架和工具。

    (三)应用场景?where?

    ①:高并发,高负载网络应用。Like  企鹅帝国。

    (四)怎么用Neety?how?

        (1)基于maven的使用方法?

         ①:添加依赖:pom.xml文件中

     <!--添加依赖Netty-->
    <dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-all</artifactId>
    <version>4.1.4.Final</version>
    </dependency>
    </dependencies>
    ②:自己编写服务端,服务端处理器和 客户端,客户处理器


    ③:Server类,ServerHandler类;Client类,ClientHandler类
    (1)定义一个Server类
    1.0 定义端口号,构造器初始化指定端口。

    2.0 调用开启服务器。-->
    2.1 创建连接线程池(EventLoopGroup bossGroup);创建处理事件的线程池(workerGroup)。
    2.2 再try{设定启动辅助类(ServerBootstrap b)【用来绑定 -->bossGroup,workerGroup信息,channel通道信息-->再绑定 自定义的处理器类serverHandler信息】,
    ,再新建ChannelFuture f=b.bind(端口号).sync()【阻塞等待服务器完全启动】,再f.channel().closeFuture().sync();【同步等待服务器关闭信息】
    2.3 在finally {关闭两个线程池: worker.Group.shoutdownGratefully();bossGroup.shutdownGratefully();
    (2)ServerHandler类继承ChannelInboundHandlerAdapter【详解看www.cnblogs.com/not-alone/articles/8361388.html】
    1.0 先(@Override)覆写channelRead(ChannelHandlerContext ctx,Object msg)throws UnsupportedEncodingException{ }方法;
    1.1 创建一个ByteBuf in=(ByteBuf)msg【字节缓冲区对象】;-->
    创建一个字节数组 byte[] req=bew byte[in.readableBytes()长度]
    1.2再in.readBytes(req)【将缓冲区的东西读入字节数组中】
    1.3再String body=new String(req,"utf-8")【将字节数组,以utf-8编码形式弄成字符串
    1.4调用计算器类.并将计算结果String calrResult=xxx;
    回写到ctx.write(Unpooled.copiedBuffer(calrResult.getBytes()))【通道处理器文本中,将字符串-->字节数组】
        2.0再(@Override)覆写channelReadComplete(ChannelHandlerContext ctx)throws Exception{ctx.flush();}
    【刷新通道,-->客户端可以通过 通道读 获取服务器回复 信息】
    3.再(@Override)覆写exceptionCaught(ChannelHandlerContext ctx,Throwable cause)
    {cause.printStanckTrace();//打印原因
    ctx.close();//打印后关闭通道处理器文本}
    (3)Client类,ClientHandler类和Server类,ServerHandler类 类似,不再多BB【详情
    www.cnblogs.com/not-alone/articles/8361388.html
  • 相关阅读:
    JS知识点简单总结
    Js答辩总结
    JS答辩习题
    轮播
    jQuery选择器总结
    JS的魅力
    JS与JAVA数据类型的区别
    单表查询、多表查询、虚拟表连接查询
    Mysql基本语句
    Mysql数据库
  • 原文地址:https://www.cnblogs.com/not-alone/p/8361864.html
Copyright © 2020-2023  润新知