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

資訊專欄INFORMATION COLUMN

Netty 客戶端

null1145 / 3157人閱讀

摘要:示例代碼首先創(chuàng)建客戶端處理讀寫的線程組然后繼續(xù)創(chuàng)建客戶端輔助啟動類隨后需要對其進(jìn)行配置與服務(wù)端不同的是它的需要設(shè)置為然后為其添加此處為了簡單直接創(chuàng)建匿名內(nèi)部類實現(xiàn)方法其作用是當(dāng)創(chuàng)建成功之后在進(jìn)行初始化時將它的設(shè)置到中用于處理網(wǎng)絡(luò)事件當(dāng)客戶

示例代碼
public class TimeClient {

    public void connect(int port, String host) throws Exception {
        EventLoopGroup group = new NioEventLoopGroup();

        try {
            Bootstrap b = new Bootstrap();
            b.group(group).channel(NioSocketChannel.class)
                    .option(ChannelOption.TCP_NODELAY, true)
                    .handler(new ChannelInitializer() {
                        @Override
                        protected void initChannel(SocketChannel ch) throws Exception {
                            ch.pipeline().addLast(new TimeClientHandler());
                        }
                    });

            ChannelFuture f = b.connect(host, port).sync();

            f.channel().closeFuture().sync();
        } finally {
            group.shutdownGracefully();
        }

    }

    private class TimeClientHandler extends ChannelHandlerAdapter {

        private ByteBuf firstMessage = null;

        public TimeClientHandler() {
            byte[] req = "66666".getBytes();
            firstMessage = Unpooled.buffer(req.length);
            firstMessage.writeBytes(req);
        }

        @Override
        public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
            ctx.close();
        }

        @Override
        public void channelActive(ChannelHandlerContext ctx) throws Exception {
            ctx.writeAndFlush(firstMessage);
        }

        @Override
        public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
            ByteBuf buf = (ByteBuf) msg;
            byte[] req = new byte[buf.readableBytes()];
            buf.readBytes(req);
            String body = new String(req, "UTF-8");
            System.out.println(body);
        }
    }
}

首先創(chuàng)建客戶端處理 IO 讀寫的 NioEventLoopGroup 線程組, 然后繼續(xù)創(chuàng)建客戶端輔助啟動類 Bootstrap, 隨后需要對其進(jìn)行配置.

與服務(wù)端不同的是, 它的 Channel 需要設(shè)置為 NioSocketChannel, 然后為其添加 Handler. 此處為了簡單直接創(chuàng)建匿名內(nèi)部類, 實現(xiàn) initChannel 方法, 其作用是當(dāng)創(chuàng)建 NioSocketChannel 成功之后, 在進(jìn)行初始化時, 將它的 ChannelHandler 設(shè)置到 ChannelPipeline 中, 用于處理網(wǎng)絡(luò) IO 事件.

當(dāng)客戶端和服務(wù)端 TCP 鏈路建立成功之后, Netty 的 NIO 線程會調(diào)用 channelActive 方法, 發(fā)送查詢時間的指令給服務(wù)端.

當(dāng)服務(wù)端返回應(yīng)答消息時, channelRead 方法被調(diào)用. 發(fā)生異常時, 調(diào)用 exceptionCaught 方法.

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

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

相關(guān)文章

  • 慕課網(wǎng)_《Netty入門之WebSocket初體驗》學(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
  • netty搭建web聊天室(1)

    摘要:提供異步的事件驅(qū)動的網(wǎng)絡(luò)應(yīng)用程序框架和工具,用以快速開發(fā)高性能高可靠性的網(wǎng)絡(luò)服務(wù)器和客戶端程序??偨Y(jié)我們完成了服務(wù)端的簡單搭建,模擬了聊天會話場景。 之前一直在搞前端的東西,都快忘了自己是個java開發(fā)。其實還有好多java方面的東西沒搞過,突然了解到netty,覺得有必要學(xué)一學(xué)。 介紹 Netty是由JBOSS提供的一個java開源框架。Netty提供異步的、事件驅(qū)動的網(wǎng)絡(luò)應(yīng)用程序框...

    izhuhaodev 評論0 收藏0
  • Netty 源碼分析之 一 揭開 Bootstrap 神秘的紅蓋頭 (戶端)

    摘要:目錄源碼分析之番外篇的前生今世的前生今世之一簡介的前生今世之二小結(jié)的前生今世之三詳解的前生今世之四詳解源碼分析之零磨刀不誤砍柴工源碼分析環(huán)境搭建源碼分析之一揭開神秘的紅蓋頭源碼分析之一揭開神秘的紅蓋頭客戶端源碼分析之一揭開神秘的紅蓋頭服務(wù)器 目錄 Netty 源碼分析之 番外篇 Java NIO 的前生今世 Java NIO 的前生今世 之一 簡介 Java NIO 的前生今世 ...

    zhaot 評論0 收藏0
  • netty學(xué)習(xí)總結(jié)(一)

    摘要:是什么是一個異步的,事件驅(qū)動的網(wǎng)絡(luò)編程框架。責(zé)任鏈模式通過將組裝起來,通過向里添加來監(jiān)聽處理發(fā)生的事件。相比于的的不僅易用,而且還支持自動擴(kuò)容。入站入站事件一般是由外部觸發(fā)的,如收到數(shù)據(jù)。 netty是什么? netty是一個異步的,事件驅(qū)動的網(wǎng)絡(luò)編程框架。 netty的技術(shù)基礎(chǔ) netty是對Java NIO和Java線程池技術(shù)的封裝 netty解決了什么問題 使用Java IO進(jìn)行...

    CntChen 評論0 收藏0
  • Netty學(xué)習(xí)-Echo服務(wù)器戶端

    摘要:服務(wù)器構(gòu)成至少一個該組件實現(xiàn)了服務(wù)器對從客戶端接受的數(shù)據(jù)的處理,即它的業(yè)務(wù)邏輯引導(dǎo)配置服務(wù)器的啟動代碼。至少,它會將服務(wù)器綁定到它要監(jiān)聽連接請求的端口上。需要注意的是,由服務(wù)器發(fā)送的消息可能會被分塊接受。 Netty服務(wù)器構(gòu)成 至少一個ChannelHandler——該組件實現(xiàn)了服務(wù)器對從客戶端接受的數(shù)據(jù)的處理,即它的業(yè)務(wù)邏輯 引導(dǎo)——配置服務(wù)器的啟動代碼。至少,它會將服務(wù)器綁定...

    dreamGong 評論0 收藏0

發(fā)表評論

0條評論

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