中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

喜德县| 美姑县| 临猗县| 阳城县| 中方县| 汶上县| 当阳市| 聊城市| 文登市| 逊克县| 临西县| 江川县| 廉江市| 大厂| 永春县| 星座| 彭泽县| 留坝县| 同江市| 开阳县| 喀喇沁旗| 衡南县| 汽车| 托里县| 岢岚县| 呼和浩特市| 丰宁| 浏阳市| 延津县| 耒阳市| 姜堰市| 奉化市| 和林格尔县| 普洱| 德令哈市| 天峻县| 孟津县| 四平市| 隆安县| 靖边县| 仪征市|