常见问题
八、Netty入门服务端代码
导论前面几篇文章我们划分对一、JAVA IO/NIO体系先容 、二、网络IO原理-建立ServerSocket-彻底弄懂IO 、三、JAVA中ServerSocket挪用Linux系统内核 、四、「大厂职员教你」IO进化历程之BIO 、五、「大厂职员教你」Java-IO进化历程之NIO 、六、Selector实现Netty中Reactor单线程模型 、七、Selector实现Netty中Reactor主从模型 等几个纬度对JavaIO和NIO体系做了详细先容,并由简到深的凭据IO体系的升级历程做了系统分析。前文中的第六、Selector实现Netty中Reactor单线程模型 、七、Selector实现Netty中Reactor主从模型文章我们已经使用Selector自己实现了Netty框架中的单线程模型、主从模型。如果能深入明白以上两篇文章,那么后续对于Netty的学习和明白Netty的Reactor会很是简朴。
今天我们先通过入门的角度从Idea中导入Netty包,而且使用Netty构建一个可用于接受数据的服务端。IDEA的maven项目的netty包的导入(其他jar同) 在这之前要有搭建好maven的情况,如何搭建maven情况请自行百度。1.2.选择Modules3.4.等候一会选择,Download to可以不用勾选,下载的jar会放在当地的jar堆栈里,如果勾选了则会在该项目下建立一个lib文件,而且将包放内里。
5.6.选择一个netty包,点击ok,接下来选择即可。最后选择7.即可完成。
在该项目的pom.xml里加入netty依赖。<!-- netty --><dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>5.0.0.Alpha2</version></dependency>netty入门服务端代码import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.*;import io.netty.channel.nio.NioEventLoopGroup;import io.netty.channel.socket.nio.NioServerSocketChannel;import io.netty.channel.socket.nio.NioSocketChannel;/*** Created by Bruce on 2020/9/18* 使用 NettyIO实现多路复用器**/public class NettyIO { public static void main(String[] args) throws InterruptedException { /** * //单线程模型---netty单线程模型---即接受客户端请求毗连也卖力处置惩罚客户端的数据 * netty单线程模型---写法 * NioEventLoopGroup boss = new NioEventLoopGroup(1); * ServerBootstrap serverBootstrap = new ServerBootstrap(); * serverBootstrap.group(boss,boss) * .channel(NioServerSocketChannel.class) * .childHandler(new MyImbound()); * * * //混淆模型---netty混淆模型---组内有一个boss即接受客户端请求毗连也卖力处置惩罚客户端的数据,其他线程只卖力处置惩罚客户端的数据 * netty混淆模型---写法 * NioEventLoopGroup boss = new NioEventLoopGroup(4); * ServerBootstrap serverBootstrap = new ServerBootstrap(); * serverBootstrap.group(boss,boss) * .channel(NioServerSocketChannel.class) * .childHandler(new MyImbound()); * * //主备模型---netty主备模型---boss 只卖力接口客户端的毗连请求 worker卖力 * * -----如果这里把 boss的参数改成 2,那么猜一下系统中会有几个线程? * 用JDK自带的jvisualvm看一下。* * NioEventLoopGroup boss = new NioEventLoopGroup(1); * NioEventLoopGroup worker = new NioEventLoopGroup(3); * ServerBootstrap serverBootstrap = new ServerBootstrap(); * serverBootstrap.group(boss,worker) * .channel(NioServerSocketChannel.class) * .childHandler(new MyImbound()); * */ NioEventLoopGroup boss = new NioEventLoopGroup(1); NioEventLoopGroup worker = new NioEventLoopGroup(3); ServerBootstrap serverBootstrap = new ServerBootstrap(); serverBootstrap.group(boss,worker) .channel(NioServerSocketChannel.class) .childHandler(new ChannelInitializer<NioSocketChannel>() { @Override protected void initChannel(NioSocketChannel nioSocketChannel) throws Exception { ChannelPipeline p = nioSocketChannel.pipeline(); p.addLast(new MyImbound()); } }); ChannelFuture future = serverBootstrap.bind(8080).sync(); future.channel().closeFuture().sync(); }}class MyImbound extends ChannelHandlerAdapter{ @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {// super.channelRead(ctx, msg); ctx.write(msg); } @Override public void channelReadComplete(ChannelHandlerContext ctx) throws Exception {// super.channelReadComplete(ctx); ctx.flush(); }}数据打印:在linux情况或者windows情况下使用nc下令链接服务端,检察服务端打印历程。详细linux系统或者windows系统如何安装nc下令,请从网络搜索或检察目录文档 ‘网络IO涉及到的-linux指令.docx’。
1.nc客户端1打印(Windows-nc下令打印)C:UsersAdministrator>nc 127.0.0.1 8080111111111111 2.nc客户端1打印(Windows-nc下令打印)C:UsersAdministrator>nc 127.0.0.1 8080222222 往期文章链接一、JAVA IO/NIO体系先容 二、网络IO原理-建立ServerSocket-彻底弄懂IO 三、JAVA中ServerSocket挪用Linux系统内核 四、「大厂职员教你」IO进化历程之BIO 五、「大厂职员教你」Java-IO进化历程之NIO 六、Selector实现Netty中Reactor单线程模型 七、Selector实现Netty中Reactor主从模型 如需相识更多更详细内容也可关注本人CSDN博客:不吃_花椒如果需要后续其他系列文章请赞赏后关注私聊。后续文章中的整体JavaIO体系文章概览。
本文关键词:八,、,Netty,入门,服务,端,代码,导论,前面,几篇,亚博yabo官网手机网页版
本文来源:亚博全站登录手机网页版-www.sqzhichuang.com