Apache Mina開發手冊之三,apachemina手冊

來源:互聯網
上載者:User

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 免費教程,有很多的!
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.