HSocket異步Socket框架
這是一個(gè)L/V(Length/Value)模型的異步Socket框架.L是指發(fā)送byte數(shù)組的長度,L固定為10個(gè)byte,V是指要發(fā)送的byte數(shù)組.可以用于處理超長的消息,處理完成的響應(yīng)也按照L/V模型發(fā)送,客戶端接收可以參考服務(wù)端解析過程。
eg:
1.第一次收到的byte[]:0 0 0 0 0 0 1 1 1 2 28 30 18 26 88 99 77 那么先取0 0 0 0 0 0 1 1 1 2,得到長度為1112,對(duì)后面的byte(從index10以后)進(jìn)行存儲(chǔ)
2.第二次收到的byte[]:5 10 0 66 0 0 1 1 1 2 28 30 18 26 88 99 44 那么繼續(xù)存儲(chǔ)收到的byte[],在之前的存儲(chǔ)上追加 ... ... n.直到第n次收到byte[],在之前的存儲(chǔ)上追加,當(dāng)存儲(chǔ)的byte[]長度等于1112時(shí)停止接收,開始解析,解析完成按照L/V模型組織發(fā)送,發(fā)送完畢繼續(xù)步驟1.(中間遇到過程錯(cuò)誤,將關(guān)閉會(huì)話)
特別提醒:
1.僅支持UTF8編碼解析,原因是UTF8支持任何語言.采用Node.js做測(cè)試時(shí),只用了英文字符做發(fā)送,原因是UTF8編碼英文字符的長度和字符串長度一致(1:1).
2.Command必須實(shí)現(xiàn)CommandBase類,并且有一個(gè)無參構(gòu)造函數(shù)(當(dāng)然你可以修改代碼,移除此限制,多數(shù)情況下這也完全夠用),實(shí)現(xiàn)的Command類必須名稱以Command結(jié)尾(大小寫敏感).eg:TCommand,客戶端發(fā)送命令參考Node.js實(shí)現(xiàn),Command為T,則正確匹配TCommand處理返回結(jié)果.
3.配置文件參考server.cfg,生成時(shí)需拷貝到生成目錄(vs可以通過屬性設(shè)置實(shí)現(xiàn)).
4.有很多實(shí)現(xiàn)可以提取出接口,進(jìn)一步優(yōu)化使得更加容易擴(kuò)展,更加靈活.
5.如果發(fā)現(xiàn)任何問題和不足之處或者BUG請(qǐng)email給我:[email protected]
