《2022年网络棋牌游戏服务器架推荐 .pdf》由会员分享,可在线阅读,更多相关《2022年网络棋牌游戏服务器架推荐 .pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、一、物理架构说明游 戏 系 统 组 件 包 括 :服 务 器 系 统( 中 心 服 务 器 控 制 系 统 ,服 务 器 登 陆 控 制 系 统 ,游 戏 登陆 服 务 器 , 游 戏 房 间 控 制 系 统 ,游 戏 组 件 系 统 ) ,游 戏 客 户 端( 游戏 大 厅 , 游 戏 组 件 ) 。数 据 库 系 统 :用 于 保 存 用 户 信 息 数 据 、游 戏 积 分 数 据 、游 戏 系 统 运行 状 态 数 据 , 系 统 日 志 数 据 等 数 据 。中 心 服 务 器 控 制 系 统 : 用 于 向 客 户 端 提 供 全 局 配 置 , 初 始 化 数 据 使用 。服 务
2、 器 登 陆 控 制 系 统 : 用 于 房 间 服 务 控 制 系 统 登 陆 效 验 使 用 。游 戏 房 间 控 制 系 统 :用 于 控 制 游 戏 房 间 的 启 动 ,停 止 ,添 加 ,删 除 ,管 理 等 。游 戏 组 件 系 统 :用 于 具 体 游 戏 服 务 ,被 游 戏 房 间 控 制 系 统 挂 接 ,提供 游 戏 服 务 。游 戏 大 厅 : 游 戏 玩 家 连 接 游 戏 使 用 。二、系统结构系 统 选 用 的 开 发 工 具 是 优 秀 的 Microsoft Visual C+.net2003, 系统 采 用 客 户 端 / 服 务 器 ( C/S ) 编
3、程 模 式 , TCP/IP协 议 作 为 客 户 端 和 服 务器 的 通 信 网 络 层 , 运 用 具 有 性 能 最 优 的 完 成 端 口 ( IOCP : Input/Output Completion Port ) 网 络 开 发 模 型 搭 建 服 务 器 软 件 . 客 户 端 采 用 WinSocket API 作 为 网 络 层 。系 统 采 用 多 服 务 器 分 布 式 架 构 , 由 一 个 中 心 服 务 器 (CENTERSERVER),多 个 主 服 务 器 ( MainServer) 和 多 个 从 服 务 器 ( LocalServer) 同 时 工 作以
4、 实 现 游 戏 逻 辑 和 用 户 管 理 及 通 讯 的 功 能 。 中 心 服 务 器 向 客 户 端 提 供 全局 配 置 , 初 始 化 数 据 ( 主 要 是 定 位 一 个 主 服 务 器 IP 地 址 ), 主 服 务 器 管 理 客户 端 用 户 身 份 验 证 、登 录 以 及 管 理 从 服 务 器 的 建 立 , 由 多 个 从 服 务 器 管 理游 戏 通 信 , 大 厅 及 房 间 , 从 服 务 器 可 任 意 添 加 、 删 除 、 修 改 等 。系 统 首 先 启 动 中 心 服 务 器 (CENTERSERVER), 中 心 服 务 器 从 INI文 件中
5、读 取 MainServer列 表 信 息 , 客 户 端 提 供 全 局 配 置 , 初 始 化 数 据 , 然 后 等待 客 户 联 结 , 客 户 联 结 后 CENTERSERVER 定 位 一 个 MainServer的 IP 地 址和 端 口 号 , 发 往 客 户 端 , 客 户 端 收 到 后 断 开 CENTERSERVER的 联 接 , 并 马 上用 MainServer的 IP 地 址 和 端 口 号 , 和 主 服 务 器 ( MainServer) 连 接 . 主服 务 器 从 数 据 库 中 读 取 从 服 务 器 的 所 有 信 息 到 主 服 务 器 的 内 存
6、 。 首 先 读取 ComType 表 以 建 立 所 有 的 游 戏 类 型 的 基 本 信 息 ,然 后 读 取 ServiceInfo( 界 面 树 结 点 信 息 表 ) 以 获 得 包 括 客 户 端 界 面 结 构 、 从 服 务 器 的 信 息 、大 厅 和 房 间 的 一 切 信 息 。 当 有 客 户 端 请 求 登 录 并 成 功 和 主 服 务 器 连 接 的时 候 , 主 服 务 器 将 这 所 有 的 信 息 一 次 性 发 到 客 户 端 内 存 , 客 户 端 根 据 这些 信 息 生 成 界 面 结 构 树 。名师资料总结 - - -精品资料欢迎下载 - - -
7、 - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 6 页 - - - - - - - - - 主 服 务 器 启 动 后 还 可 以 在 主 服 务 器 里 创 建 多 个 从 服 务 器 及 房 间 ,创 建完 成 后 从 服 务 器 的 IP 地 址 及 端 口 号 就 作 为 它 的 唯 一 标 识 被 同 时 写 进 数 据库 和 主 服 务 器 的 内 存 ; 房 间 号 、 房 间 所 属 的 游 戏 类 型 、 所 属 的 从 服 务 器号 也 作 为 房 间 的 唯 一 标 识 被 同 时 写 进 数 据 库
8、 和 主 服 务 器 的 内 存 。从 服 务 器 创 建 以 后 就 在 它 所 属 的 机 器 上 启 动 。客 户 端 登 录 后 首 先 和 主 服 务 器 建 立 连 接( 并 且 一 直 到 客 户 端 退 出 才 断开 ) 连 接 成 功 后 生 成 界 面 结 构 树 ( 前 述 ) , 当 用 户 点 击 某 个 游 戏 房 间 的时 候 系 统 从 内 存 中 读 出 这 个 房 间 的 所 有 信 息 ( 前 述 ) , 根 据 房 间 所 属 从服 务 器 的 IP 地 址 及 端 口 号 试 图 和 这 个 从 服 务 器 建 立 连 接 , 连 接 成 功 后 相应
9、 的 从 服 务 器 就 将 这 个 房 间 的 所 有 信 息 发 到 这 个 客 户 端 , 客 户 端 收 到 以后 就 根 据 这 些 信 息 生 成 房 间 。 每 当 有 客 户 端 的 游 戏 位 置 发 生 改 变 的 时 候就 向 从 服 务 器 发 送 改 变 信 息 , 从 服 务 器 保 存 、 修 改 所 有 与 它 连 接 的 客 户端 的 位 置 信 息 列 表 。当 一 张 桌 子 坐 满 时 游 戏 开 始 。游 戏 开 始 后 客 户 端 也 是 和 从 服 务 器 通 信以 更 新 游 戏 信 息 。当 客 户 端 退 出 游 戏 后 就 回 到 大 厅
10、的 这 个 房 间 , 当 退 出大 厅 的 时 候 首 先 和 从 服 务 器 断 开 连 接 , 然 后 和 主 服 务 器 断 开 连 接 , 最 后终 止 整 个 客 户 端 程 序 。三、模块结构系 统 包 括 三 大 主 要 模 块 结 构 : MainServer, LocalServer, Com. 此 外还 有 客 户 端 安 装 ,更 新 模 块 等 。在 三 大 主 要 模 块 结 构 中 还 有 子 DLL( 动 态链 接 库 ) 模 块 。1、 MainServer( EXE 项 目 ) : 封 装 主 服 务 器 功 能 , 包 括 管 理 客 户 端用 户 身 份
11、 验 证 、 登 录 以 及 管 理 从 服 务 器 的 建 立 , 数 据 库 读 写 等 。2、 LocalServer( EXE 项 目 ) : 封 装 从 服 务 器 功 能 , 包 括 管 理 客 户 端游 戏 通 信 , 游 戏 逻 辑 , 大 厅 及 房 间 等 。3、 Com( EXE 项 目 ) : 封 装 客 户 端 所 有 功 能 , 包 括 客 户 端 登 录 , 大 厅及 房 间 , 客 户 端 游 戏 通 信 , 游 戏 逻 辑 等 。 Com 包 括 以 下 子 模 块 :a.客 户 端 通 用 库 PubLib(DLL模 块 ) 封 装 了 客 户 端 通 用
12、的 调 用 接 口 ,控件 , 类 。 供 客 户 端 所 有 的 模 块 调 用 . b.麻 将 游 戏 通 用 库 MJLib(DLL模 块 ) 封 装 了 客 户 端 麻 将 游 戏 通 用 的 调用 接 口 类 和 十 堰 麻 将 类 。通 用 的 调 用 接 口 类 供 特 殊 的 麻 将 游 戏 模 块调 用 。c.扑 克 牌 游 戏 通 用 库 PisaLib(DLL模 块 ) 封 装 了 客 户 端 扑 克 牌 游 戏 通用 的 调 用 接 口 类 。通 用 的 调 用 接 口 类 供 特 殊 的 扑 克 牌 游 戏 模 块 调 用 。d.大 厅 库 RoomLib(DLL模
13、块 ) 封 装 了 客 户 端 大 厅 的 调 用 接 口 。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 6 页 - - - - - - - - - e.象 棋 库 XQLib(DLL模 块 ) 封 装 了 客 户 端 象 棋 的 调 用 接 口 。f.围 棋 库 XQLib(DLL模 块 ) 封 装 了 客 户 端 围 棋 的 调 用 接 口 。g.军 棋 库 XQLib(DLL模 块 ) 封 装 了 客 户 端 军 棋 的 调 用 接 口 。服 务 器 架 构 示
14、 意 图 :组 件 模 块 结 构 示 意 图 :组 件 模 块 以 中 心 数 据 管 理 模 块 为 中 心 , 数 据 库 处 理 模 块 和SOCKET 管 理 模 块 提 供 外 部 操 作 联 系 。 以 下 是 对 每 个 模 块 的 功 能 和接 口 的 介 绍 :1.中 心 数 据 管 理 模 块 继 承 于 CBaseMainManage类 , 主 要 是 协 调各 个 模 块 的 联 系 , 处 理 模 块 的 逻 辑 处 理 , 保 证 数 据 的 完 整 性和 合 理 性 和 合 法 性 。 中 心 数 据 管 理 类 是 单 线 程 类 , 使 用 单 线程 的 目
15、 的 是 为 了 使 数 据 的 处 理 避 免 了 同 步 问 题 , 数 据 的 操 作不 需 要 使 用 临 界 变 量 锁 定 数 据 , 加 快 了 处 理 速 度 , 但 前 题 条件 是 数 据 处 理 中 , 不 能 出 现 长 时 间 的 数 据 等 待 , 锁 定 操 作 存名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 6 页 - - - - - - - - - 在 。 中 心 数 据 管 理 类 实 现 了 IServerSocketService
16、网 络 数 据处 理 接 口 和 IDataBaseResultService数 据 库 结 果 处 理 接 口 ,提 供 了 网 络 模 块 和 数 据 库 模 块 的 进 入 接 口 , 这 两 个 接 口 是 供网 络 模 块 和 数 据 库 模 块 调 用 ( 意 思 就 是 调 用 线 程 不 是 于 中 心管 理 模 块 的 处 于 同 一 线 程 内 , 要 注 意 数 据 同 步 问 题 ) 。 数 据管 理 模 块 对 于 这 些 接 口 调 用 的 处 理 方 式 是 先 把 投 入 的 数 据 处理 包 分 类 , 分 别 分 为 网 络 定 时 器 数 据 包 , 网
17、络 读 取 数 据 包 ,网 络 连 接 关 闭 数 据 包 , 数 据 库 结 果 数 据 包 , 打 包 为 数 据 管 理类 识 别 的 数 据 形 式 , 投 递 到 数 据 管 理 类 的 处 理 队 列 , 等 待 数据 管 理 类 处 理 。 当 中 心 数 据 管 理 类 需 要 投 递 数 据 库 操 作 的 时候 , 就 通 过 数 据 管 理 类 的 IDataBaseHandleService接 口 投 递请 求 ( 异 步 方 式 ) , 当 数 据 库 处 理 完 毕 后 , 数 据 库 管 理 模 块会 调 用 中 心 管 理 类 的 IDataBaseResul
18、tService数 据 库 结 果接 口 。2.SOCKET 管 理 模 块 CTCPSocketManage类 ,主 要 是 实 现 了 管 理网 络 连 接 资 源 , 处 理 网 络 SOCET 的 读 写 操 作 , 主 要 提 供 了 单SOCKET 发 送 函 数 , 群 发 SOCKET 函 数 , SOCKET 关 闭 函 数 , 提供 SOCKET 事 件 通 知 。 网 络 管 理 类 是 多 线 程 处 理 类 。 单SOCKET 发 送 函 数 是SendData 函 数 , 存 在 着 多 种 重 载 实 现 , 提 供 不同 的 数 据 发 送 请 求 , 群 发S
19、OCKET 函 数 是SendDataBatch 函 数 , 关 闭SOCKET 函 数 是CloseSocket 函 数 , 存 在 着 多种 重 载 实 现 , 当 发 送 了 网 络 消 息 读 取 事 件 , 此 类 主 要 是 通 过调 用 OnNetMessage 虚 拟 函 数 , 利 用 IServerSocketService接 口 把 数 据 读 取 数 据 包 投 递 到 中 心 数 据 管 理 类 。 当 网 络 关 闭的 时 候 , 也 通 过 IServerSocketService接 口 把 数 据 读 取 数 据包 投 递 到 中 心 数 据 管 理 类 。 (
20、 详 细 的 实 现 见 代 码 )主 要 有 的 线 程 介 绍 :static unsigned _stdcall ThreadAccept(LPVOID pThreadData) ( SOCKET 连 接 应 答 线 程 )网 络 应 答 线 程 , 等 待 外 部 连 接 , 激 活 一 个 空 闲 的SOCKET 对 象 , 设 置SOCKET 参 数 , 并 把 这 新 的SOCKET 对 象 绑 定 到 完 成 端 口 , 然 后 投 递 缓 冲 区 为 零 的 数 据 读取 操 作 调 用 , 继 续 等 待 下 一 个 外 部 连 接 , 详 细 的 算 法见 代 码 。st
21、atic unsigned _stdcall ThreadRSSocket(LPVOID pThreadData) ( SOCKET 数 据 接 收 线 程 )名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 6 页 - - - - - - - - - 一 个 网 络 管 理 类 提 供 了CUP*2+2 个SOCKET 消息 响 应 线 程 , 负 责 处 理 网 络 数 据 的 发 送 , 读 取 , 关 闭消 息 处 理 , 详 细 的 算 法 见 代 码 。stat
22、ic unsigned _stdcall ThreadBatchSend(LPVOID pThreadData) ( SOCKET 批 量 发 送 数 据 线 程 )一 个 网 络 管 理 类 提 供 了 一 个 数 据 群 发 线 程 , 负 责处 理 数 据 的 群 发 异 步 操 作 。 此 线 程 采 用 优 化 的 队 列 方式 处 理 群 发 数 据 , 避 免 了 队 列 的 数 据 移 动 而 带 来 的 数据 拷 贝 操 作 , 加 快 了 处 理 速 度 , 详 细 的 算 法 见 代 码 。static unsigned _stdcall ThreadKeepActive
23、(LPVOID pThreadData) ( SOCKET 维 护 线 程 )一 个 网 络 管 理 类 提 供 了 一 个 SOCKET 维 护 线 程 ,负责 维 护 断 线 或 者 超 时 的SOCKET 对 象 , 每 个SOCKET 对 象 自 动 被 激 活 开 始 , 服 务 器 就 会 大 约15 秒 向 客 户端 发 送 一 个 检 测 数 据 包 , 客 户 端 会 在 收 到 此 检 测 数 据包 的 时 候 马 上 向 服 务 器 返 回 同 样 的 检 测 数 据 包 。 在 这前 题 条 件 下 , 维 护 线 程 就 会 大 约15 秒 向 所 有 的SOCKET
24、 对 象 都 发 送 一 个 检 测 数 据 包 ,并 关 闭 掉 没 有 响应 的SOCKET 对 象 , 详 细 的 算 法 见 代 码 。3.数 据 库 管 理 模 块 , 主 要 包 括 了 数 据 库 管 理CAFCDataBaseManage类 和 数 据 库 处 理 CDataBaseHandle类( 继 承 于 IDataBaseHandleService接 口 ) 。CAFCDataBaseManage只 实 现 了 数 据 的 连 接 、关 闭 操 作 和 数 据库 操 作 请 求 的 投 递 任 务 , 而 实 际 的 数 据 处 理 是 根 据 不 同 的 模块 进 行
25、 不 同 的 数 据 库 处 理 操 作 , 通 过 CDataBaseHandle实 现实 际 的 数 据 操 作 。 这 样 就 避 免 了 不 同 的 数 据 库 操 作 重 复 编 写数 据 库 的 维 护 ,连 接 等 代 码 。CAFCDataBaseManage在 会 启 动一 个 DataServiceThread线 程 , 等 待 数 据 库 处 理 请 求 操 作 数据 包 , 交 到 类 的 成 员 变 量 CDataBaseHandle指 针 处 理 。模 块 编 写 实 际 类 分 布 :名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - -
26、 - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 6 页 - - - - - - - - - 每 个 游 戏 模 块 ( 继 承 于 IModuleManageService接 口 ) , 都 包含 了 数 据 管 理 模 块( 继 承 于 CBaseMainManage类 )和 数 据 库 处 理 模块 ( 继 承 于 CDtaBaseHandle类 ) , 实 现 了 模 块 的 启 动 , 停 止 , 初始 化 ,卸 载 功 能 ,每 个 模 块 需 要 继 承 重 写 的 部 分 就 是 数 据 库 处 理 模块 和 数 据 管 理 模 块 。
27、数 据 管 理 模 块 包 含 了 此 组 件 的 数 据 信 息 , 逻 辑 处 理 ,负 责 处 理和 发 送 网 络 数 据 包 ,更 具 需 要 投 递 数 据 库 处 理 请 求 ,处 理 数 据 库 处理 结 果 。 实 现 了 网 络 数 据 包 投 递 接 口 , 数 据 库 处 理 结 果 处 理 接 口 。数 据 库 处 理 模 块 包 含 了 处 理 数 据 库 请 求 处 理 ,发 送 数 据 库 处 理结 果 到 数 据 管 理 模 块 处 理 。实 现 了 根 据 请 求 ,实 现 合 适 的 数 据 库 操作 。数 据 库 管 理 类 和 网 络 管 理 类 对
28、象 存 在 于 CBaseMainManage类 中 ,而 实 际 的 数 据 库 操 作 类 是 个 独 立 的 类 ,存 在 于 模 块 管 理 类 中 ,在 模块 初 始 化 的 时 候 把 此 类 的 对 象 指 针 传 递 到 数 据 库 管 理 类 ,供 数 据 库管 理 类 调 用 。游 戏 房 间 模 块 示 意 说 明 :游 戏 房 间 模 块 是 应 用 得 最 多 模 块 之 一 ,于 其 他 模 块 最 大 的 不 同点 的 是 中 心 数 据 管 理 类 ( 继 承 于 CbaseMainManage类 的CComMainManage类 )数 据 管 理 类 继 承 于 基 础 数 据 管 理 类 , 还 存 在CComUserInfoManage用 户 管 理 类 和 CComDesk 游 戏 桌 子 类 对 象 数 据 。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 6 页 - - - - - - - - -