Java IO烛谊,Socket非阻塞通信流程
這里我們使用一個內(nèi)嵌的永久循環(huán),來讓Socket成為一個非阻塞的通信流程嘉汰。
如上圖所示丹禀,ServerSocket是我們自建的一個類,通過啟動線程,且線程內(nèi)置一個真循環(huán)双泪,防止accept阻塞持搜;
在客戶端監(jiān)聽類上,將監(jiān)聽到的socket作為參數(shù)焙矛,傳遞到客戶端監(jiān)聽類上葫盼,并再次啟動線程,獲取一個InputStream村斟,同時再次在這個剛剛啟動線程內(nèi)置一個真循環(huán)贫导,為的是不斷獲取信息并回寫;
這里要注意的是蟆盹,第一個真循環(huán)是保證獲取新連接不會阻塞孩灯,第二個真循環(huán)是保證不停的獲取客戶端信息并回寫;
關(guān)于客戶端則通過端口和IP逾滥,啟動線程峰档,通過一個循環(huán)不停的向服務(wù)端寫數(shù)據(jù);
Netty入門
基于上面的圖寨昙,我們也可以學(xué)習(xí)Netty相關(guān)的基礎(chǔ)入門讥巡。
NioEventLoop(事件循環(huán))
1、新連接接入
2舔哪、連接上的數(shù)據(jù)讀取
Channel(抽象連接)
Socket尚卫、SocektChannel(IO\NIO)抽象
ChannelHandler(業(yè)務(wù)邏輯處理)
讀寫數(shù)據(jù)期間的業(yè)務(wù)層
PipeLine(動態(tài)鏈處理)
多個ChannelHandler組成,讓消息可以層層處理
ByteBuf(數(shù)據(jù)接收)
基本的數(shù)據(jù)處理基于ByteBu