Netty學(xué)習(xí)教程之基礎(chǔ)使用篇-創(chuàng)新互聯(lián)

什么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)

商城網(wǎng)站建設(shè)