1. 程式人生 > >【APACHE MINA2.0開發之二】自定義實現SERVER/CLIENT端的編解碼工廠(自定義編碼與解碼器)!

【APACHE MINA2.0開發之二】自定義實現SERVER/CLIENT端的編解碼工廠(自定義編碼與解碼器)!

在上一篇博文中已經簡單介紹過“過濾器”的概念,那麼在Mina 中的協議編解碼器通過過濾器 ProtocolCodecFilter 構造,這個過濾器的構造方法需 要一個 ProtocolCodecFactory,這從前面註冊 TextLineCodecFactory 的程式碼就可以看出來。 ProtocolCodecFactory 中有如下兩個方法:

public interface ProtocolCodecFactory {

ProtocolEncoder getEncoder(IoSession session) throws Exception;

ProtocolDecoder getDecoder(IoSession session) throws Exception;

}

因此,構建一個 ProtocolCodecFactory 需要 ProtocolEncoder、ProtocolDecoder 兩個例項。你可能要問 JAVA 物件和二進位制資料之間如何轉換呢?這個要依據具體的通訊協議,也就是 Server 端要和 Client 端約定網路傳輸的資料是什麼樣的格式,譬如:第一個位元組表示資料 長度,第二個位元組是資料型別,後面的就是真正的資料(有可能是文字、有可能是圖片等等), 然後你可以依據長度從第三個位元組向後讀,直到讀取到指定第一個位元組指定長度的資料。

簡單的說,HTTP 協議就是一種瀏覽器與 Web 伺服器之間約定好的通訊協議,雙方按照指定 的協議編解碼資料。我們再直觀一點兒說,前面一直使用的 TextLine 編解碼器就是在讀取 網路上傳遞過來的資料時,只要發現哪個位元組裡存放的是 ASCII 的 10、13 字元(\r、\n), 就認為之前的位元組就是一個字串(預設使用 UTF-8 編碼)。

以上所說的就是各種協議實際上就是網路七層結構中的應用層協議,它位於網路層(IP)、 傳輸層(TCP)之上,Mina 的協議編解碼器就是讓你實現一套自己的應用層協議棧。

首先我們建立一個傳遞的物件類:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859packagecom.entity;import javax.persistence.Column;import javax.persistence.Entity;import javax
.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.Table;import org.hibernate.annotations.Index;/** * @author Himi */@Entity@Table(name="playerAccount")publicclassPlayerAccount_Entity{

相關推薦

APACHE MINA2.0開發定義實現SERVER/CLIENT解碼工廠定義編碼解碼

在上一篇博文中已經簡單介紹過“過濾器”的概念,那麼在Mina 中的協議編解碼器通過過濾器 ProtocolCodecFilter 構造,這個過濾器的構造方法需 要一個 ProtocolCodecFactory,這從前面註冊 TextLineCodecFactory 的程式碼就可以看出來。 Protoc

APACHE MINA2.0開發之一搭建APACHE MINA框架並實現SERVERCLIENT的簡單訊息傳遞

Hibernate系列學習階段到此結束了,那麼緊接著進入Apache Mina的開發學習,很多童鞋在微薄和QQ中疑問Himi為什麼突然脫離遊戲開發了,嘿嘿,其實可能更多的童鞋已經看出來了,Himi在偏向伺服器Server端開發了,Hibernate、MySQL等都是為了Server端Mina開發而做的

COCOS2DX-IOS-遊戲開發 最熱血的RPG+RTS塔防遊戲Flesh&Blood-Attack on Orc上線了

我們的新遊戲Flesh&Blood – Attack on Orc  中文名:血肉之軀 正式在AppStore上線了,是一款熱血的塔防RTS遊戲,同時支援iPhone和iPad AppStore下載地址: 目前是收費的,過兩天限免的時候我會第一時間通知大家的. 

FastDFS分散式檔案系統:FastDFS小檔案上傳效能測試及Python客戶上傳操作

  由於要對比swift上傳小檔案以及fdfs上傳小檔案的效能,故做效能測試。 1.1 測試環境: FastDFS叢集的搭建方法:【FastDFS分散式檔案系統之一】:搭建、部署、配置 tracker server1:node2 tracker server2:node3

COCOS2DX-LUA 指令碼開發利用Lua強轉函式解決使用CCNode報錯或無法正常使用以及簡單介紹 quick-cocos2d-x OpenQuick 兩款Lua免費開源框架

Him 的Cocos2dx-Lua群中有童鞋出現一個問題,問題是當他在Lua專案中利用Lua建立一個區域性變數CCSprite或者CCLayer等CCNode,然後在其他的函式中通過其索引取出之前建立過的CCSprite或CCLayer等,取出後進行設定設定透明、座標、縮放、

深度學習介紹系列——深度強化學習:卷積神經網路

介紹深度學習強化學習中的卷積神經網路 卷積神經網路的大致介紹我們在前一篇文章深度強化學習(一)中已經說過了。本篇文章會詳細介紹卷積神經網路的起源,發展和應用。本篇文章我們會從以下幾個方面介紹: 1)神經網路是什麼 2)卷積神經網路的起源與經典結構 3)卷積網路的

COCOS2DX-BOX2D遊戲開發 讀取tiledmap的tmx阻擋

做一款畫素遊戲專案,需要讀取TMX檔案中的阻擋區域,生成box2d的fixture,來做阻擋  使用cocos2dx版本: 2.2.2 1.在tmx檔案中建立一個"Physics"的層,用來存放編輯器中生成的各種阻擋塊 編輯器中主要有polygone, polyline,

COCOS2DX-BOX2D遊戲開發 Box2D勻速運動

文章最後,附上自己的勻加速程式碼片段 以勻速移動物體 遊戲中一種常見的需求是讓物體做勻速運動。例如橫屏遊戲中的玩家角色,太空飛船或者汽車,等等。根據遊戲的不同,有時候物體應該逐漸改變速度,其他情況又希望能夠瞬間開始和停止運動。使用SetLinearVelocity方

COCOS2DX-LUA 指令碼開發十三解決lua專案編譯Android出現get data from file failed、Cocos2dxActivity cannot be 路徑等問題

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) CCString* pstrFileContent = CCString::createWithContentsOfFile("himi.lua"); if (pstrFi

前端攻城獅CSS兩列布局——右側固定寬度、左側適應

做了一道貓廠很經典的前端筆試題,解決了一直以來在兩列布局的認識上思考太少的毛病。 題目要求是右側aside固定寬度200px,左側content自適應。 本來直接用float,發現aside總是會被

LC3開源峰會網絡技術系列阿裏雲開發智能網卡的動機、功能框架和軟轉發程序

copy 特點 fda 優化 ext shadow 所有 type 解密 摘要: 摘要 這篇文章介紹了阿裏雲開發智能網卡的動機、功能框架和軟轉發程序以及在軟轉發過程中發現的問題和優化方法。 主講人陳靜 阿裏雲高級技術專家 主題Zero-copy Optimization f

iOSEV3混合機器人程系列工欲善其事,必先利其準備篇

style 混合 版權 相同 開發 code 操作系統 圖形 ipa 在上一篇文章中,我們論述了iOS與EV3結合後機器人開發的無限可能。那麽,大家要不要一起來Hacking一把呢?為了能夠完整地完畢我接下來我講的項目。我們須要做下面準備:1、一臺Mac執行MAC OS

Lucene4.8教程索引

文件路徑 位置 存在 this nth 創建索引 exe 搜索 最簡 一、基礎內容 0、官方文檔說明 (1)org.apache.lucene.index provides two primary classes: IndexWriter, whic

opencv入門感興趣區域ROI,線性混合addWeighted

bsp enc 擁有 ted 興趣 通道數 amp log 兩個 參考網站: http://blog.csdn.net/poem_qianmo/article/details/20911629 1、感興趣區域ROI   //【2】定義一個Mat類型並給其設定ROI區

.NET開發使用ComponentOne提高.NET DataMap中的載入速度

概述 FlexGrid for WinForm 採用了最新的資料繫結技術,並與Microsoft .NET Framework無縫整合。 因此,您可以獲得易於使用的靈活網格控制元件,用於建立使用者友好介面,以顯示、編輯、格式化、組織、彙總和打印表格資料。 FlexGrid的DataMap屬性允

webpack結合React開發環境配置React開發環境配置Webpack結合Babel8.x版本安裝的正確姿勢Webpack最新版4.x結合Babel8.x環境配置步驟

1. 安裝cnpmnpm install -g cnpm --registry=https://registry.npm.taobao.org【使用淘寶映象】2. 初始化package.json檔案cnpm init -y3. 安裝webpackcnpm install -d webpack webpack-

MAKEFILE 程基礎MAKEFILE 書寫規劃以及語法規則

情況 log path變量 介紹 情況下 是把 一般來說 sch cpp 本站文章均為 李華明Himi 原創,轉載務必在明顯處註明: 轉載自【黑米GameDev街區】 原文鏈接: http://www.himigame.com/gcc-makefile/768.html

Java進階面試系列:哥們,那你說說系統架構引入訊息中介軟體有什麼缺點?

歡迎關注個人公眾號:石杉的架構筆記(ID:shishan100) 週一至週五早8點半!精品技術文章準時送上! 一、前情回顧 上篇文章「Java進階面試系列之一」你們系統架構中為何要引入訊息中介軟體?,給大家講了講訊息中介軟體引入系統架構的作用,主要是解決哪些問題的。 其比較常見的實踐場景是: 複雜系統

案例:促銷三講少就是多理清促銷影響因素,總結促銷經驗

作者:接地氣的陳老師 ----------------------------------------   切記開場鋪指標,抓住重點最重要   一提及促銷分析,大家都喜歡一股腦的丟一堆PV/UV、活躍率、轉化率、客單價指

OpenCV入門教程 一覽眾山小:OpenCV 2.4.8 or OpenCV 2.4.9元件結構全解析

毛星雲,網路ID「淺墨」,90後,熱愛遊戲開發、遊戲引擎、計算機圖形、實時渲染等技術,就職於騰訊互娛。 微軟最有價值專家 著作《Windows遊戲程式設計之從零開始》、《OpenCV3程式設計入門》 碩士就讀於南京航空航天大學航天學院(2013級碩士研究生),已於2016年三月畢業。本科