国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Netty 客戶端

null1145 / 3150人閱讀

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

示例代碼
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);
        }
    }
}

首先創建客戶端處理 IO 讀寫的 NioEventLoopGroup 線程組, 然后繼續創建客戶端輔助啟動類 Bootstrap, 隨后需要對其進行配置.

與服務端不同的是, 它的 Channel 需要設置為 NioSocketChannel, 然后為其添加 Handler. 此處為了簡單直接創建匿名內部類, 實現 initChannel 方法, 其作用是當創建 NioSocketChannel 成功之后, 在進行初始化時, 將它的 ChannelHandler 設置到 ChannelPipeline 中, 用于處理網絡 IO 事件.

當客戶端和服務端 TCP 鏈路建立成功之后, Netty 的 NIO 線程會調用 channelActive 方法, 發送查詢時間的指令給服務端.

當服務端返回應答消息時, channelRead 方法被調用. 發生異常時, 調用 exceptionCaught 方法.

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/72728.html

相關文章

  • 慕課網_《Netty入門之WebSocket初體驗》學習總結

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

    Noodles 評論0 收藏0
  • netty搭建web聊天室(1)

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

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

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

    zhaot 評論0 收藏0
  • netty學習總結(一)

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

    CntChen 評論0 收藏0
  • Netty學習-Echo服務器戶端

    摘要:服務器構成至少一個該組件實現了服務器對從客戶端接受的數據的處理,即它的業務邏輯引導配置服務器的啟動代碼。至少,它會將服務器綁定到它要監聽連接請求的端口上。需要注意的是,由服務器發送的消息可能會被分塊接受。 Netty服務器構成 至少一個ChannelHandler——該組件實現了服務器對從客戶端接受的數據的處理,即它的業務邏輯 引導——配置服務器的啟動代碼。至少,它會將服務器綁定...

    dreamGong 評論0 收藏0

發表評論

0條評論

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