【第22篇】Netty解碼器剖析與入站出站處理器

Netty的處理器重要概念

  • 1纹蝴、Netty的處理器可以分為兩大類:入站處理器與出站處理器
  • 2、入站處理器的頂層是ChannelInboundHandler榔幸,而出站處理器的頂層是ChannelOutboundHandler
  • 3鹃唯、數(shù)據(jù)處理器時常用的各種編解碼,本質(zhì)上都是處理器
  • 4弃舒、編解碼器:物流我們向網(wǎng)絡(luò)希爾的數(shù)據(jù)是什么類型(int,char,String 二進制等)數(shù)據(jù)在網(wǎng)絡(luò)傳遞時候状原,其都是以字節(jié)流的形式呈現(xiàn)的棒坏,將數(shù)據(jù)由原本的形式轉(zhuǎn)換為字節(jié)流的操作成為編碼encode,將數(shù)據(jù)由字節(jié)流轉(zhuǎn)換成原本的格式或是其他格式的操作稱為解碼(decode)遭笋,編解碼統(tǒng)稱為codec
  • 5、編碼:本質(zhì)上是一種出站的處理器徒探,因此一定是ChannelOutboundHandler
  • 6瓦呼、解碼:本質(zhì)上是一種入站的處理器,因此一定是ChannelInboundHandler
  • 7测暗、在Netty中央串,編碼器通常以XXXEncoder命名,解碼器通常以XXXDecoder命名
    *入站處理器代碼使用如:
public class MyServerHandler extends SimpleChannelInboundHandler<String> {

    @Override
    protected void channelRead0(ChannelHandlerContext ctx, String msg) throws Exception {
        System.out.println(ctx.channel().remoteAddress() + ", " + msg);
        ctx.channel().writeAndFlush("from server: " + UUID.randomUUID());
    }

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

關(guān)于Netty編解碼的重要結(jié)論

  • 1碗啄、無論是編碼器還是解碼器质和,其所接收的消息類型,必須要與待處理的參數(shù)類型一致稚字,否則該編碼器或解碼器并不會被執(zhí)行
  • 2饲宿、在解碼器進行數(shù)據(jù)解碼時候厦酬,一定要記得判斷(ByteBuf)中的數(shù)據(jù)是否足夠,否則將會產(chǎn)生一些問題

組合方式管理通道句柄

  • CombinedChannelDuplexHandler瘫想,從代碼里面看出來仗阅,它基礎(chǔ)ChannelDuplexHandler管道,此類有諸多重要的方法如:bind,channelRead,
    connect国夜、disconnect减噪、deregister,而它有一個內(nèi)部類DelegatingChannelHandlerContext,它也有比較多重要的方法车吹,如:alloc,attr,bind這里不寫了筹裕,請看【DelegatingChannelHandlerContext方法】截圖
CombinedChannelDuplexHandler關(guān)系圖

DelegatingChannelHandlerContext方法

DelegatingChannelHandlerContext方法
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市窄驹,隨后出現(xiàn)的幾起案子朝卒,更是在濱河造成了極大的恐慌,老刑警劉巖馒吴,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扎运,死亡現(xiàn)場離奇詭異,居然都是意外死亡饮戳,警方通過查閱死者的電腦和手機豪治,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扯罐,“玉大人负拟,你說我怎么就攤上這事〈鹾樱” “怎么了掩浙?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長秸歧。 經(jīng)常有香客問我厨姚,道長,這世上最難降的妖魔是什么键菱? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任谬墙,我火速辦了婚禮,結(jié)果婚禮上经备,老公的妹妹穿的比我還像新娘拭抬。我一直安慰自己,他們只是感情好侵蒙,可當(dāng)我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布造虎。 她就那樣靜靜地躺著,像睡著了一般纷闺。 火紅的嫁衣襯著肌膚如雪算凿。 梳的紋絲不亂的頭發(fā)上份蝴,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天,我揣著相機與錄音澎媒,去河邊找鬼搞乏。 笑死,一個胖子當(dāng)著我的面吹牛戒努,可吹牛的內(nèi)容都是我干的请敦。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼储玫,長吁一口氣:“原來是場噩夢啊……” “哼侍筛!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起撒穷,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤匣椰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后端礼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體禽笑,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年蛤奥,在試婚紗的時候發(fā)現(xiàn)自己被綠了佳镜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡凡桥,死狀恐怖蟀伸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情缅刽,我是刑警寧澤啊掏,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站衰猛,受9級特大地震影響迟蜜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜啡省,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一娜睛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧冕杠,春花似錦、人聲如沸酸茴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽薪捍。三九已至笼痹,卻和暖如春配喳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背凳干。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工晴裹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人救赐。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓涧团,卻偏偏與公主長得像,于是被迫代替她去往敵國和親经磅。 傳聞我的和親對象是個殘疾皇子泌绣,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容