因為不想去處理網路io 所以偷懶直接使用了 libevent作為網路庫。。(但是後果就是很多莫名其妙的bug無法明白。以後嘗試替換
首先 每乙個新連線 都會分配乙個 sessionid 作為流水號增長。
相當於乙個client
然後統一放到乙個singlton的sessionmanager裡做統一處理 。使用map儲存 sessionid作為key
每個session都有乙個接受資料快取區。收到資料便往新增到快取區尾部。然後嘗試去parse乙個包。
每個包包含
byte 位元組序
int 全包長度 (包含位元組序那1位元組
short 客戶端包序列
short 協議包型別
byte 協議版本
short 16位校驗碼
int 包資料長度
void* 包資料
其實每個包都帶位元組序有些多餘。可以嘗試在第乙個包裡確定。
解析後,將解析過的資料從快取區中移除。
得到包後記錄得到時間, 將包放到乙個環形佇列中,等待被執行。
網遊伺服器框架(2)Stream
為了方便序列化資料,特建立了inputstream 和 outstream 2種資料容器。每個流在初始化的時候。都帶有位元組序屬性,在寫入和讀取的時候,先處理再返回,這樣邏輯部分可以解決位元組序等問題。output 在初始化的時候 建立乙個固定大小的快取區。保持乙個流指標。每次寫入新的資料,都cop...
通用網遊伺服器
通用網遊伺服器是適用於一類網遊的伺服器,如rpg網遊伺服器.通用伺服器提供的是適用於該類網遊的機制,與內容無關.特定於某乙個遊戲的內容由指令碼和配置檔案實現.目前在指令碼機制不完善的情況下,可以把特定的遊戲內容分離到動態鏈結庫中,實現機制與內容分開.這個通用的網遊伺服器還可以分成兩個部分 1.核心,...
通用網遊伺服器
通用網遊伺服器是適用於一類網遊的伺服器,如rpg網遊伺服器.通用伺服器提供的是適用於該類網遊的機制,與內容無關.特定於某乙個遊戲的內容由指令碼和配置檔案實現.目前在指令碼機制不完善的情況下,可以把特定的遊戲內容分離到動態鏈結庫中,實現機制與內容分開.這個通用的網遊伺服器還可以分成兩個部分 1.核心,...