通過對基礎庫的分析可以知道,客戶端通過IClientSocket、IClientSocketSink和服務器通訊。
現在把問題集中起來,只分析客戶端和服務器之間的接口,也就是IO
當前分析的模式是GamePlaza
CPlazaViewItem CRoomViewItem這兩個實現了IClientSocketSink接口,也就是說他們能接受服務器消息;
IClientSocketSink能響應三個事件OnSocketConnect OnSocketRead OnSocketClose
主要的數據交換應該是依賴OnSocketRead
CPlazaViewItem
OnSocketRead
MDM_GP_LOGON //登陸消息
SUB_GP_LOGON_SUCCESS //登陸成功
CMD_GP_LogonSuccess
(接下來的叫擴展信息)
DTP_USER_ACCOUNTS //用戶帳戶
數據由DataDescribe描述
DTP_USER_PASS //用戶密碼
數據由DataDescribe描述
DTP_USER_GROUP_NAME //社團名字
數據由DataDescribe描述
SUB_GP_LOGON_ERROR //登陸失敗
MDM_GP_SERVER_LIST //列表消息
SUB_GP_LIST_TYPE //類型信息
tagGameType數組
SUB_GP_LIST_KIND //種類消息
tagGameKind數組
SUB_GP_LIST_PROCESS //進程信息
tagGameProcess數組
SUB_GP_LIST_STATION //站點消息
tagGameStation數組
SUB_GP_LIST_SERVER //服務器房間
tagGameServer數組
SUB_GP_LIST_FINISH //列表發送完成
SUB_GP_LIST_CONFIG //列表配置
CMD_GP_ListConfig
MDM_GP_SYSTEM //系統消息
SUB_GP_VERSION //版本信息
CMD_GP_Version
CRoomViewItem
OnSocketRead
MDM_GR_LOGON //登錄消息
SUB_GR_LOGON_SUCCESS //登錄成功
SUB_GR_LOGON_ERROR //登錄失敗
SUB_GR_LOGON_FINISH //登錄完成
MDM_GR_USER //用戶消息
SUB_GR_USER_COME //用戶進入
tagUserInfoHead
(附加)
DTP_USER_ACCOUNTS //用戶帳戶
數據由DataDescribe描述
DTP_USER_GROUP_NAME //社團名字
數據由DataDescribe描述
SUB_GR_USER_STATUS //用戶狀態
CMD_GR_UserStatus
SUB_GR_USER_SCORE //用戶分數
CMD_GR_UserScore
SUB_GR_SIT_FAILED //坐下失敗
CMD_GR_SitFailed
SUB_GR_USER_CHAT //用戶聊天
CMD_GR_UserChat
SUB_GR_USER_WISPER //用戶私語
CMD_GR_Wisper
SUB_GR_USER_INVITE //邀請玩家
CMD_GR_UserInvite
MDM_GR_INFO //配置信息
SUB_GR_SERVER_INFO //房間信息
CMD_GR_ServerInfo
SUB_GR_COLUMN_INFO //列表解釋
CMD_GR_ColumnInfo
SUB_GR_CONFIG_FINISH //配置完成
MDM_GR_STATUS //狀態信息
SUB_GR_TABLE_INFO //桌子信息
CMD_GR_TableInfo
SUB_GR_TABLE_STATUS //桌子狀態
CMD_GR_TableStatus
MDM_GR_SYSTEM //系統消息
SUB_GR_MESSAGE //系統消息
CMD_GR_Message
MDM_GR_SERVER_INFO //房間信息
SUB_GR_ONLINE_COUNT_INFO //在線信息
tagOnLineCountInfo
MDM_GF_GAME //游戲消息
MDM_GF_FRAME //框架消息
IPC_SocketPackage