Mina--結構分析

BtWangZhi發表於2017-09-29

1 Mina工作流程:
這裡寫圖片描述
IoConnector-》IOprcessor-》IOFilter-Handler-》IOAcceptor-》
IOProcess-》IOFilter-》Handler-》IOconnector

2 核心類說明:
2.1 IOService介面,子介面是IoConnector和IoAcceptor,分別用來描述我們的客戶端和伺服器端
getFilterChain:獲取過濾鏈
setHandler(IoHandler handler):設定我們真正的業務
getSessionConfig()得到我們的配置資訊
disponse()在我們完成關閉連線的時候所吊用的方法。
2.2 IoConnector
connect(SocketAddress remoteAddress)主要使用者發起一個連線請求
setConnectTimeout(int connectTimeout)連線超時的設定
2.3 IoProcess:是以NIO為基礎實現的多執行緒的方式來完成我們的讀寫工作。為我們的Filter讀寫原始資料的多執行緒的環境。
通過 NioSocketAcceptor(int processorCount)建構函式可以指定多執行緒的個數
通過 NioSocketConnector(int processorCount)建構函式也可以指定多執行緒的個數。
2.4 IOFilter
是在應用層和我們業務層之間的過濾成,自定義過濾器繼承IoFilterAdapte,r在handler處理之前,需要呼叫相應的過濾器進行過濾
Client:業務Handler之前會弔用我們的過濾器
Server:同樣在我們直接得到資料的時候,和傳送資料的時候也呼叫了我們的過濾器,然後
才交給我們的handler。
2.5 IoAcceptor
bind(SocketAddress loaclAddress)繫結埠
getLocalAddress()獲得本地IP地址
2.6 IoSession:描述的是客戶端和服務端連線的描述,常常用於傳送和接受資料
主要描述我們的網路通訊雙方所建立的連線之間的描述
IOSession:可以傳送和讀取資料,並且可以設定我們會話的上下文資訊
IOSessionConfig:設定讀寫緩衝區的一些資訊。
2.7 NioSocketConnector
connect(SocketChannel handle, SocketAddress remoteAddress) 連線請求
register(SocketChannel handle, ConnectionRequest request) 註冊我們的IO事件
Select(int timeout)返回選擇器
2.8 IoBuffer:基於JavaNio中的BytesBuffer做了封裝,使用者操作緩衝區中的資料,包括基本資料型別以及位元組陣列和一些物件,其本質就是一個可動態擴充套件的byte陣列。
allocate(int capacity)指定大小空間
setAutoExpand(Boolean autoExpand)可以設定是否支援動態的擴充套件。
putString(CharSequence val, CharsetEncoder encoder)
putShort(short value);實現將資料放入緩衝區中。
reset:實現清空資料
Clear:實現資料的覆蓋,

3 實際使用的過程中客戶端採用NIOSocketConnector,而客戶端採用NioSocketAcceptor

demo下載地址:http://download.csdn.net/download/btwangzhi/10003561

相關文章