欢迎来到天天文库
浏览记录
ID:42604212
大小:179.19 KB
页数:10页
时间:2019-09-18
《NIO编程之Netty入门篇V1》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、深圳三代人科技有限公司NIO编程之Netty入门篇看到这个标题,可能你会感到疑惑,NIO?Netty?是什么东西。想要真正学习Netty的知识,就必须对这几个概念有一定的了解。NIO:有人称之为NewI/O,原因在于它相对于之前的I/O类库是新增的,这是它的官方叫法。但是,由于之前老的I/O类库是阻塞I/O,NewI/O类库的目标就是要让Java支持非阻塞I/O,所以,更多的人喜欢称之为非阻塞I/O(Non-blockI/O)。由于非阻塞I/O更能体现NIO的特点,所以,这里的NIO指的是非阻塞I/O。Netty:Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、
2、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。到这里,应该对这两个概念有了一定的了解,那接下来,进行Netty的学习。配置pom文件:io.nettynetty-all4.0.31.Final先上代码,对Netty的开发有一个第一印象。代码清单1-1EchoServer服务端EchoServer/** * Netty 服务端代码 * */publicclassEchoS
3、erver{publicvoidbind(intport)throwsException{//配置服务器的NIO线程组EventLoopGroupbossGroup=newNioEventLoopGroup();EventLoopGroupworkerGroup=newNioEventLoopGroup();try{//启动NIO服务端的辅助启动类ServerBootstrapb=newServerBootstrap();b.group(bossGroup,workerGroup).channel(NioServerSocketChannel.class).option(ChannelO
4、ption.SO_BACKLOG,1024).handler(newLoggingHandler(LogLevel.INFO)).childHandler(newChannelInitializer(){@OverrideprotectedvoidinitChannel(SocketChannelch)throwsException{System.out.println("报告");System.out.println("信息:有一客户端链接到本服务端");System.out.println("IP:"+ch.localAddress().getHostN
5、ame());System.out.println("Port:"+ch.localAddress().getPort());深圳三代人科技有限公司System.out.println("报告完毕");ch.pipeline().addLast(newLengthFieldBasedFrameDecoder(65535,0,4,0,4));ch.pipeline().addLast(newLengthFieldPrepender(4));//解码器Stringch.pipeline().addLast(newStringDecoder(Charset.forName("UTF-8")))
6、;//编码器Stringch.pipeline().addLast(newStringEncoder(Charset.forName("UTF-8")));ch.pipeline().addLast(newProtocolDecode());ch.pipeline().addLast(newProtocolEncode());ch.pipeline().addLast(newEchoServerHandler());}});//绑定端口,同步等待成功//ChannelFuture用于异步操作的通知回调ChannelFuturef=b.bind(port).sync();//等待服务器监听
7、端口关闭f.channel().closeFuture().sync();}finally{//优雅退出,释放线程池资源bossGroup.shutdownGracefully();workerGroup.shutdownGracefully();}}publicstaticvoidmain(String[]args)throwsException{intport=8082;if(args!=null&&args.length>0)
此文档下载收益归作者所有