91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

四子王旗| 衡水市| 恩平市| 公主岭市| 永顺县| 太白县| 蒲城县| 东兴市| 吉林市| 汾阳市| 云浮市| 万荣县| 信丰县| 镇巴县| 鄂托克旗| 博罗县| 芷江| 孟州市| 惠水县| 西吉县| 高平市| 桦甸市| 临安市| 浦江县| 甘南县| 确山县| 黑河市| 大同市| 清河县| 贵德县| 马龙县| 沁阳市| 汉沽区| 西吉县| 龙州县| 滨州市| 军事| 东方市| 闽清县| 盖州市| 荣昌县|