什么Netty?
創(chuàng)新互聯(lián)公司是少有的成都網(wǎng)站制作、做網(wǎng)站、營銷型企業(yè)網(wǎng)站、小程序開發(fā)、手機(jī)APP,開發(fā)、制作、設(shè)計(jì)、賣鏈接、推廣優(yōu)化一站式服務(wù)網(wǎng)絡(luò)公司,從2013年成立,堅(jiān)持透明化,價(jià)格低,無套路經(jīng)營理念。讓網(wǎng)頁驚喜每一位訪客多年來深受用戶好評(píng)Netty是由JBOSS提供的一個(gè)java開源框架。Netty提供異步的、事件驅(qū)動(dòng)的網(wǎng)絡(luò)應(yīng)用程序框架和工具,用以快速開發(fā)高性能、高可靠性的網(wǎng)絡(luò)服務(wù)器和客戶端程序。
也就是說,Netty 是一個(gè)基于NIO的客戶、服務(wù)器端編程框架,使用Netty 可以確保你快速和簡單的開發(fā)出一個(gè)網(wǎng)絡(luò)應(yīng)用,例如實(shí)現(xiàn)了某種協(xié)議的客戶,服務(wù)端應(yīng)用。Netty相當(dāng)簡化和流線化了網(wǎng)絡(luò)應(yīng)用的編程開發(fā)過程,例如,TCP和UDP的socket服務(wù)開發(fā)。
我們下面編寫四個(gè)類
1.用于接收數(shù)據(jù)的服務(wù)器端Socket
2.用于接收客戶端的消息,用于接收和反饋客戶端發(fā)出的消息類ServertHandler
3.用于發(fā)送數(shù)據(jù)的服務(wù)器端Client
4.用于發(fā)送數(shù)據(jù)和接收服務(wù)器端發(fā)出的數(shù)據(jù)處理類ClientHandler
Socket.java
import io.netty.bootstrap.ServerBootstrap; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelOption; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.nio.NioServerSocketChannel; import io.netty.handler.codec.DelimiterBasedFrameDecoder; import io.netty.handler.codec.string.StringDecoder; public class Server { public static void main(String[] args) throws InterruptedException { //1.第一個(gè)線程組是用于接收Client端連接的 EventLoopGroup bossGroup = new NioEventLoopGroup(); //2.第二個(gè)線程組是用于實(shí)際的業(yè)務(wù)處理的 EventLoopGroup workerGroup = new NioEventLoopGroup(); ServerBootstrap b = new ServerBootstrap(); b.group(bossGroup, workerGroup);//綁定兩個(gè)線程池 b.channel(NioServerSocketChannel.class);//指定NIO的模式,如果是客戶端就是NioSocketChannel b.option(ChannelOption.SO_BACKLOG, 1024);//TCP的緩沖區(qū)設(shè)置 b.option(ChannelOption.SO_SNDBUF, 32*1024);//設(shè)置發(fā)送緩沖的大小 b.option(ChannelOption.SO_RCVBUF, 32*1024);//設(shè)置接收緩沖區(qū)大小 b.option(ChannelOption.SO_KEEPALIVE, true);//保持連續(xù) b.childHandler(new ChannelInitializer<SocketChannel>() { @Override protected void initChannel(SocketChannel sc) throws Exception { ByteBuf buf = Unpooled.copiedBuffer("$_".getBytes());//拆包粘包定義結(jié)束字符串(第一種解決方案) sc.pipeline().addLast(new DelimiterBasedFrameDecoder(1024,buf));//在管道中加入結(jié)束字符串 // sc.pipeline().addLast(new FixedLengthFrameDecoder(200));第二種定長 sc.pipeline().addLast(new StringDecoder());//定義接收類型為字符串把ByteBuf轉(zhuǎn)成String sc.pipeline().addLast(new ServertHandler());//在這里配置具體數(shù)據(jù)接收方法的處理 } }); ChannelFuture future = b.bind(8765).sync();//綁定端口 future.channel().closeFuture().sync();//等待關(guān)閉(程序阻塞在這里等待客戶端請(qǐng)求) bossGroup.shutdownGracefully();//關(guān)閉線程 workerGroup.shutdownGracefully();//關(guān)閉線程 } }
當(dāng)前題目:Netty學(xué)習(xí)教程之基礎(chǔ)使用篇-創(chuàng)新互聯(lián)
網(wǎng)頁URL:http://muchs.cn/article30/idgpo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、面包屑導(dǎo)航、品牌網(wǎng)站建設(shè)、網(wǎng)站營銷、網(wǎng)站排名、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容