成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Netty簡明教學(xué)文檔

raise_yang / 715人閱讀

摘要:寫個簡單點(diǎn),比較小白的文檔,言語比較接地氣是什么的高層封裝,很難寫,所以有了,方便異步的操作的主要代碼片段按照代碼順序解釋如下事件循環(huán)隊(duì)列,用來接受或發(fā)送事件。

寫個簡單點(diǎn),比較小白的文檔,言語比較接地氣

Netty是什么?
NIO的高層封裝,NIO很難寫,所以有了Netty,方便異步的操作

service的主要代碼片段

public void run() throws Exception {
        EventLoopGroup bossGroup = new NioEventLoopGroup(); // (1)
        EventLoopGroup workerGroup = new NioEventLoopGroup();
        try {
            ServerBootstrap b = new ServerBootstrap(); // (2)
            b.group(bossGroup, workerGroup)
             .channel(NioServerSocketChannel.class) // (3)
             .childHandler(new ChannelInitializer() { // (4)
                 @Override
                 public void initChannel(SocketChannel ch) throws Exception {
                     ch.pipeline().addLast(new DiscardServerHandler());
                 }
             })
             .option(ChannelOption.SO_BACKLOG, 128)          // (5)
             .childOption(ChannelOption.SO_KEEPALIVE, true); // (6)
    
            // Bind and start to accept incoming connections.
            ChannelFuture f = b.bind(port).sync(); // (7)
    
            // Wait until the server socket is closed.
            // In this example, this does not happen, but you can do that to gracefully
            // shut down your server.
            f.channel().closeFuture().sync();
        } finally {
            workerGroup.shutdownGracefully();
            bossGroup.shutdownGracefully();
        }
    }

按照代碼順序解釋如下

(1) EventLoopGroup bossGroup = new NioEventLoopGroup();
事件循環(huán)隊(duì)列,用來接受或發(fā)送事件。大家可以把他想象成郵局,消息都要先到郵局,然后再分發(fā)出去,郵局維護(hù)了一個循環(huán)隊(duì)列,用來不斷的收信和發(fā)信。

(2)ServerBootstrap b = new ServerBootstrap();
啟動服務(wù)

(3) b.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class)
開啟了一個通道,這個通道是用來接受連接請求的,管道大家都知道吧,IO里也有,NIO中也有,一切Java中到處都是管道

(4).childHandler(new ChannelInitializer()
這個handler是用來表示響應(yīng)什么樣的事件的,比如我們這里DiscardServerHandler,隨著程序的復(fù)雜,你會加上更多的handle,handler是具體干事的人

(5).option(ChannelOption.SO_BACKLOG, 128)
channel的配置參數(shù),具體可以查手冊

(6).childOption(ChannelOption.SO_KEEPALIVE, true);
option()是 NioServerSocketChannel的配置,childOption()是被parent ServerChannel接受的channel,這里就指的是NioServerSocketChannel

(7)ChannelFuture f = b.bind(port).sync();
綁定端口并開始

再看看我們主要進(jìn)行事件處理的handle

public class DiscardServerHandler extends ChannelHandlerAdapter { // (1)

    @Override
    public void channelRead(ChannelHandlerContext ctx, Object msg) { // (2)
        // Discard the received data silently.
        ((ByteBuf) msg).release(); // (3)
    }

    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { // (4)
        // Close the connection when an exception is raised.
        cause.printStackTrace();
        ctx.close();
    }
}

(1)DiscardServerHandler extends ChannelHandlerAdapter
表示:俺是具體干事的人

(2)我們overrider了 channelRead(),用來讀取接受到的信息

(3)異常處理,懂的...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/69978.html

相關(guān)文章

  • ApacheCN 編程/大數(shù)據(jù)/數(shù)據(jù)科學(xué)/人工智能學(xué)習(xí)資源 2019.6

    摘要:請回復(fù)這個帖子并注明組織個人信息來申請加入。權(quán)限分配靈活,能者居之。數(shù)量超過個,在所有組織中排名前。網(wǎng)站日超過,排名的峰值為。導(dǎo)航歸檔社區(qū)自媒體平臺微博知乎專欄公眾號博客園簡書合作侵權(quán),請聯(lián)系請抄送一份到贊助我們 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=...

    Bmob 評論0 收藏0
  • 少啰嗦!一分鐘帶你讀懂Java的NIO和經(jīng)典IO的區(qū)別

    摘要:的選擇器允許單個線程監(jiān)視多個輸入通道。一旦執(zhí)行的線程已經(jīng)超過讀取代碼中的某個數(shù)據(jù)片段,該線程就不會在數(shù)據(jù)中向后移動通常不會。 1、引言 很多初涉網(wǎng)絡(luò)編程的程序員,在研究Java NIO(即異步IO)和經(jīng)典IO(也就是常說的阻塞式IO)的API時,很快就會發(fā)現(xiàn)一個問題:我什么時候應(yīng)該使用經(jīng)典IO,什么時候應(yīng)該使用NIO? 在本文中,將嘗試用簡明扼要的文字,闡明Java NIO和經(jīng)典IO之...

    Meils 評論0 收藏0
  • 慕課網(wǎng)_《Netty入門之WebSocket初體驗(yàn)》學(xué)習(xí)總結(jié)

    時間:2018年04月11日星期三 說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):https://www.imooc.com 教學(xué)源碼:https://github.com/zccodere/s... 學(xué)習(xí)源碼:https://github.com/zccodere/s... 第一章:課程介紹 1-1 課程介紹 什么是Netty 高性能、事件驅(qū)動、異步非阻塞的IO Java開源框架 基于NIO的客戶...

    Noodles 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<