亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Netty組件中怎么初始化Channel

發布時間:2021-08-12 10:58:50 來源:億速云 閱讀:136 作者:Leah 欄目:大數據

本篇文章給大家分享的是有關Netty組件中怎么初始化Channel,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。


一、DefaultChannelPipeline實例化

 

DefaultChannelPipeline隨著Channel的創建而創建,即只要創建了Channel就會同時創建與其對應的ChannelPipeline。下面代碼是Channel實例化時調用,上篇文章文末的代碼。 


Netty組件中怎么初始化Channel


1.ChannelHandlerContext類圖結構
 


ChannelHandlerContext直觀從命名上看出為ChannelHandler上下文,每次構造DefaultChannelHandlerContext都會傳入與之對應的ChannelHandler.


Netty組件中怎么初始化Channel


ChannelHandlerContext類圖結構 


Netty組件中怎么初始化Channel



2.ChannelPipeline類圖結構
 


從下面類圖結構可以看出,ChannelPipeline提供了很多操作鏈表的方法,addFirst/addLast/addBefore/addLast/remove/replace等,入參為ChannelHandler。ChannelPipeline的各種fire操作均通過HandlerContext進行處理。 


Netty組件中怎么初始化Channel


3.鏈表關系圖示
 


先從下面代碼看下運營時的鏈表結構,截圖如下。 


示例代碼

Netty組件中怎么初始化Channel


內存結構

Netty組件中怎么初始化Channel


畫個示意圖來說明ChannelPipeline、ChannelHandlerContext、ChannelHandler的關系。


關系圖示

Netty組件中怎么初始化Channel

 

一、Channel初始化 


切換到Channel初始化過程,在客戶端引導類Bootstrap調用b.connect()或者服務端引導類ServerBootstrap調用bind()時,會調用到抽象引導類AbstractBootstrap的initAndRegister()。下面紅色部分即channel初始化入口。 


Netty組件中怎么初始化Channel


1.客戶端初始化    
 

   


@1 客戶端初始化代碼中,將ChannelHandler通過DefaultChannelHandlerContext加入ChannelPipeline鏈表中

@2 setChannelOptions以NioChannelOption為例,客戶端最后調用到SocketChannelImpl#setOption(); 可以對以下屬性進行設置

  • StandardSocketOptions.SO_RCVBUF // 接受緩存區大小

  • StandardSocketOptions.SO_SNDBUF // 發送緩存區大小

  • StandardSocketOptions.SO_LINGER // 設置延遲關閉的時間

  • StandardSocketOptions.IP_TOS // 設置數據包優先級

  • StandardSocketOptions.IP_MULTICAST_TTL // 設置多播組數據的TTL值

  • ... 


2.服務端初始化    
 

   


Netty組件中怎么初始化Channel


@1 setChannelOptions同樣以NioChannelOption為例,服務端會調用到ServerSocketChannelImpl#setOption(),參數含義見客戶端端初始化@1

@2 ChannelInitializer實現了ChannelHandler加入到了ChannelPipeline的鏈表中,其中的邏輯在另文分析EventLoopGroup時梳理

以上就是Netty組件中怎么初始化Channel,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平阳县| 崇仁县| 怀化市| 广水市| 南昌县| 凤翔县| 修水县| 罗田县| 驻马店市| 碌曲县| 玉龙| 安西县| 永兴县| 偃师市| 句容市| 农安县| 江都市| 读书| 哈尔滨市| 沁水县| 盐源县| 秭归县| 图木舒克市| 子长县| 庄河市| 阳朔县| 巴里| 丰镇市| 绥宁县| 榆树市| 沁阳市| 文昌市| 景泰县| 泰兴市| 内乡县| 佛教| 陈巴尔虎旗| 甘谷县| 永兴县| 永善县| 长葛市|