什么Netty?
Netty是由JBOSS提供的一個java開源框架。Netty提供異步的、事件驅動的網(wǎng)絡應用程序框架和工具,用以快速開發(fā)高性能、高可靠性的網(wǎng)絡服務器和客戶端程序。
也就是說,Netty 是一個基于NIO的客戶、服務器端編程框架,使用Netty 可以確保你快速和簡單的開發(fā)出一個網(wǎng)絡應用,例如實現(xiàn)了某種協(xié)議的客戶,服務端應用。Netty相當簡化和流線化了網(wǎng)絡應用的編程開發(fā)過程,例如,TCP和UDP的socket服務開發(fā)。
我們下面編寫四個類
1.用于接收數(shù)據(jù)的服務器端Socket
2.用于接收客戶端的消息,用于接收和反饋客戶端發(fā)出的消息類ServertHandler
3.用于發(fā)送數(shù)據(jù)的服務器端Client
4.用于發(fā)送數(shù)據(jù)和接收服務器端發(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.第一個線程組是用于接收Client端連接的 EventLoopGroup bossGroup = new NioEventLoopGroup(); //2.第二個線程組是用于實際的業(yè)務處理的 EventLoopGroup workerGroup = new NioEventLoopGroup(); ServerBootstrap b = new ServerBootstrap(); b.group(bossGroup, workerGroup);//綁定兩個線程池 b.channel(NioServerSocketChannel.class);//指定NIO的模式,如果是客戶端就是NioSocketChannel b.option(ChannelOption.SO_BACKLOG, 1024);//TCP的緩沖區(qū)設置 b.option(ChannelOption.SO_SNDBUF, 32*1024);//設置發(fā)送緩沖的大小 b.option(ChannelOption.SO_RCVBUF, 32*1024);//設置接收緩沖區(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());//拆包粘包定義結束字符串(第一種解決方案) sc.pipeline().addLast(new DelimiterBasedFrameDecoder(1024,buf));//在管道中加入結束字符串 // sc.pipeline().addLast(new FixedLengthFrameDecoder(200));第二種定長 sc.pipeline().addLast(new StringDecoder());//定義接收類型為字符串把ByteBuf轉成String sc.pipeline().addLast(new ServertHandler());//在這里配置具體數(shù)據(jù)接收方法的處理 } }); ChannelFuture future = b.bind(8765).sync();//綁定端口 future.channel().closeFuture().sync();//等待關閉(程序阻塞在這里等待客戶端請求) bossGroup.shutdownGracefully();//關閉線程 workerGroup.shutdownGracefully();//關閉線程 } }
當前題目:Netty學習教程之基礎使用篇-創(chuàng)新互聯(lián)
網(wǎng)頁URL:http://www.rwnh.cn/article30/idgpo.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、面包屑導航、品牌網(wǎng)站建設、網(wǎng)站營銷、網(wǎng)站排名、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內容