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