亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

Netty簡(jiǎn)明教學(xué)文檔

raise_yang / 760人閱讀

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

寫(xiě)個(gè)簡(jiǎn)單點(diǎn),比較小白的文檔,言語(yǔ)比較接地氣

Netty是什么?
NIO的高層封裝,NIO很難寫(xiě),所以有了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ì)列,用來(lái)接受或發(fā)送事件。大家可以把他想象成郵局,消息都要先到郵局,然后再分發(fā)出去,郵局維護(hù)了一個(gè)循環(huán)隊(duì)列,用來(lái)不斷的收信和發(fā)信。

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

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

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

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

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

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

再看看我們主要進(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(),用來(lái)讀取接受到的信息

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/69978.html

相關(guān)文章

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

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

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

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

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

    時(shí)間:2018年04月11日星期三 說(shuō)明:本文部分內(nèi)容均來(lá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ū)動(dòng)、異步非阻塞的IO Java開(kāi)源框架 基于NIO的客戶...

    Noodles 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<