摘要:抽象在中步驟監(jiān)聽(tīng)端口對(duì)應(yīng)就是,即事件循環(huán),這里的循環(huán)包括兩個(gè)部分,一個(gè)是新連接的接入,而另一個(gè)則是當(dāng)前存在連接的數(shù)據(jù)流的讀寫。對(duì)的抽象服務(wù)端接收數(shù)據(jù)流的載體都是基于,封裝了許多高可用的,我們可以基于這些與底層數(shù)據(jù)流做通信。
傳統(tǒng)socket
首先還是先了解下傳統(tǒng)socket下的通信流程
流程很清晰,細(xì)節(jié)不講太多。
Netty抽象在netty中步驟1監(jiān)聽(tīng)端口對(duì)應(yīng)就是NioEventLoop,即事件循環(huán),這里的循環(huán)包括兩個(gè)部分,一個(gè)是新連接的接入,而另一個(gè)則是當(dāng)前存在連接的數(shù)據(jù)流的讀寫。
接著接到一個(gè)新用戶的連接,而其在java底層是作為Socket來(lái)處理,即在IO下是socket,NIO下是SocketChannel,而Netty將其自定義封裝為Channel,基于此Channel,一系列的讀寫都可以在其連接上工作。(對(duì)Socket的抽象)
服務(wù)端接收數(shù)據(jù)流的載體都是基于ByteBuf,ByteBuf封裝了許多高可用的API,我們可以基于這些API與底層數(shù)據(jù)流做通信。
當(dāng)數(shù)據(jù)流到達(dá)服務(wù)端后,服務(wù)端需要處理一些業(yè)務(wù)邏輯,這時(shí)就是ChannelHandler。我們也可以自定義Java對(duì)象,在ChannelHandler中做處理,數(shù)據(jù)包的分包、不同類型數(shù)據(jù)包的Java轉(zhuǎn)換。
數(shù)據(jù)流的寫出也是基于ByteBuf。
ChannelHandler是一個(gè)列的形式。Netty將這些邏輯串了起來(lái),讓用戶方便的對(duì)業(yè)務(wù)做處理。
相關(guān)項(xiàng)目關(guān)于Netty的產(chǎn)品導(dǎo)向項(xiàng)目 UncleCatMySelf/SBToNettyChat
如果本文對(duì)你有所幫助,歡迎關(guān)注本人技術(shù)公眾號(hào),謝謝。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/77209.html
摘要:它使用了事件通知以確定在一組非阻塞套接字中有哪些已經(jīng)就緒能夠進(jìn)行相關(guān)的操作。目前,可以把看作是傳入入站或者傳出出站數(shù)據(jù)的載體。出站事件是未來(lái)將會(huì)觸發(fā)的某個(gè)動(dòng)作的操作結(jié)果,這些動(dòng)作包括打開(kāi)或者關(guān)閉到遠(yuǎn)程節(jié)點(diǎn)的連接將數(shù)據(jù)寫到或者沖刷到套接字。 netty的概念 定義 Netty 是一款異步的事件驅(qū)動(dòng)的網(wǎng)絡(luò)應(yīng)用程序框架,支持快速地開(kāi)發(fā)可維護(hù)的高性能的面向協(xié)議的服務(wù)器和客戶端。我們可以很簡(jiǎn)單的...
摘要:事件循環(huán)新連接接入連接上的數(shù)據(jù)讀取抽象連接抽象業(yè)務(wù)邏輯處理讀寫數(shù)據(jù)期間的業(yè)務(wù)層動(dòng)態(tài)鏈處理多個(gè)組成,讓消息可以層層處理數(shù)據(jù)接收基本的數(shù)據(jù)處理基于公眾號(hào)貓說(shuō)學(xué)習(xí)交流群現(xiàn)架構(gòu)設(shè)計(jì)碼農(nóng)兼創(chuàng)業(yè)技術(shù)顧問(wèn),不羈平庸,熱愛(ài)開(kāi)源,雜談程序人生與不定期干貨。 本博客 貓叔的博客,轉(zhuǎn)載請(qǐng)申明出處閱讀本文約 4分鐘 適讀人群:同學(xué) Java IO,Socket非阻塞通信流程 這里我們使用一個(gè)內(nèi)嵌的永久循環(huán),...
摘要:目錄源碼分析之番外篇的前生今世的前生今世之一簡(jiǎn)介的前生今世之二小結(jié)的前生今世之三詳解的前生今世之四詳解源碼分析之零磨刀不誤砍柴工源碼分析環(huán)境搭建源碼分析之一揭開(kāi)神秘的紅蓋頭源碼分析之一揭開(kāi)神秘的紅蓋頭客戶端源碼分析之一揭開(kāi)神秘的紅蓋頭服務(wù)器 目錄 Netty 源碼分析之 番外篇 Java NIO 的前生今世 Java NIO 的前生今世 之一 簡(jiǎn)介 Java NIO 的前生今世 ...
摘要:豐富的緩存數(shù)據(jù)結(jié)構(gòu)使用它自己的緩存來(lái)表示字節(jié)序列而不是的。針對(duì)有一個(gè)定義良好的事件模型。有一些協(xié)議是多層的建立在其他低級(jí)協(xié)議基礎(chǔ)上。此外,甚至不是完全線程安全的。協(xié)議由標(biāo)準(zhǔn)化為。協(xié)議緩存整合是一個(gè)高效二進(jìn)制協(xié)議的快速實(shí)現(xiàn)。 Chapter 2、結(jié)構(gòu)概覽 這一節(jié)我們將確認(rèn)Netty提供的核心功能是什么,以及它們?cè)趺礃?gòu)成一個(gè)完整的網(wǎng)絡(luò)應(yīng)用開(kāi)發(fā)堆棧。 1、豐富的緩存數(shù)據(jù)結(jié)構(gòu) Netty使用它...
摘要:下面無(wú)恥的貼點(diǎn)源碼。啟動(dòng)類我們也學(xué),把啟動(dòng)類抽象成兩層,方便以后寫客戶端。別著急,我們慢慢來(lái),下一篇我們會(huì)了解以及他的成員,然后,完善我們的程序,增加其接收數(shù)據(jù)的能力。文章的源碼我會(huì)同步更新到我的上,歡迎大家,哈哈。 廢話兩句 這次更新拖了很長(zhǎng)時(shí)間,第一是自己生病了,第二是因?yàn)樽铋_(kāi)始這篇想寫的很大,然后構(gòu)思了很久,發(fā)現(xiàn)不太合適把很多東西寫在一起,所以做了點(diǎn)拆分,準(zhǔn)備國(guó)慶前完成這篇博客。...
閱讀 3322·2023-04-26 03:06
閱讀 3746·2021-11-22 09:34
閱讀 1204·2021-10-08 10:05
閱讀 3162·2021-09-22 15:53
閱讀 3621·2021-09-14 18:05
閱讀 1536·2021-08-05 09:56
閱讀 2051·2019-08-30 15:56
閱讀 2174·2019-08-29 11:02