Apache Mina開發手冊之三,apachemina手冊
Apache Mina開發手冊之三
作者:chszs,轉載需註明。部落客頁:http://blog.csdn.net/chszs
2、Mina伺服器的架構
Mina伺服器的架構圖如下所示:
1)IOAcceptor即I/O接收器,負責監聽網路連接和發過來的資料包。
2)對於任一新串連,會建立一個新會話,隨後所有從該IP地址:連接埠發送過來的請求都會由該會話進行處理。
3)會話接收到的所有包,都會通過整個過濾器鏈的處理。過濾器可用於修改包的內容(比如轉換對象,添加/刪除資訊等),把原始的位元組轉換成進階對象,反之亦然,以及包轉碼器PacketEncoder和PacketDecoder等都是相當有用的。
4)最後包通過IOHandler控制代碼處理或轉換,以滿足業務的需求。
3、基於Mina的用戶端架構
Mina用戶端需要串連到伺服器,發送訊息並處理響應,它的架構圖如下所示:
1)用戶端首先建立IOConnector連接器(Mina為Socket串連構建的),啟動時與伺服器綁定。
2)一旦串連建立,會建立會話,並與串連相關聯。
3)應用程式或用戶端向會話寫入資料,使得資料被發送到伺服器,而後通過過濾器鏈。
4)從伺服器收到的響應或訊息也會遍曆整個過濾器鏈,到達IOHandler控制代碼,進行處理。
六、建立Mina用戶端
下面我們編寫一個求和運算的用戶端為例。
可見,要構建Mina用戶端,我們需要完成以下步驟:
1)建立連接器
2)建立過濾器鏈
3)建立IOHandler控制代碼,並添加到連接器
4)綁定到伺服器
下面詳細說明。
1、建立連接器
NioSocketConnector connector = new NioSocketConnector();
2、建立過濾器鏈
if(USE_CUSTOM_CODEC){connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(new SumUpProtocolCodecFactory(false)));} else{connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(new ObjectSerializationCodecFactory()));}
3、建立IOHandler控制代碼
connector.setHandler(new ClientSessionHandler(values));
4、綁定到伺服器
IoSession session;for (;;) { try { ConnectFuture future = connector.connect(new InetSocketAddress(HOSTNAME, PORT)); future.awaitUninterruptibly(); session = future.getSession(); break; } catch (RuntimeIoException e) { System.err.println("Failed to connect."); e.printStackTrace(); Thread.sleep(5000); }}
我們串連到伺服器,由於串連是非同步任務,故我們使用ConnectFuture類,它可以知道串連什麼時候完成。一旦串連完成了,我們就可以獲得相關的IoSession會話。
要發送訊息到伺服器,我們必須向會話寫入訊息資料。
javanio相關及apache的mina架構助
你就別置頂了 這麼多天了!花點時間花點時間自己也就做出來了!
不就是socket通訊嘛,網上類似 java.nio斷點續傳的沒發現的話,那其他語言的斷點續傳的多的是啊? 原理就是 比如說用戶端讀取一段檔案 1000位元組 同時建立一個記錄檔案 記錄傳輸狀態
比如說 傳輸中 已完成之類的狀態
服務端接收檔案,寫到一個臨時檔案裡,並建立一個記錄檔案,記錄接收到哪兒了。
如此迴圈,一直到完成。 然後將這臨時檔案改為目標檔案名
如果通訊有中斷,用戶端再發起socket串連,第一步就是讀取記錄檔案,如果有未完成的檔案傳輸,就請求服務端返回服務端接收檔案的位置。 用戶端就知道需要從哪兒開始讀。繼續讀 繼續發送
Apache Mina的使用教程與原理講解
這個你可以上百度搜尋: apache +mina 或者 apache+mina 免費教程,有很多的!