網遊伺服器框架(1)Session

2021-06-19 13:11:48 字數 583 閱讀 6868

因為不想去處理網路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.核心,...