棋牌源码吧

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 318|回复: 0

网络棋牌服务器的架构方法

[复制链接]

2971

主题

0

回帖

8930

积分

超级版主

Rank: 8Rank: 8

积分
8930
发表于 2023-8-9 03:17:06 | 显示全部楼层 |阅读模式
一、物理架构说明
  游戏系统组件包括:
  服务器系统(中心服务器控制系统,服务器登陆控制系统,游戏登陆服务器,游戏房间控制系统,游戏组件系统),游戏客户端(游戏大厅,游戏组件)。
  数据库系客户端是什么意思啊统:用于保存用户信息数据、游戏积分数据、游戏系统运行状态数据,系统日志数据等数据。
  中心服务器控制系统:用于数据库向客户端提供全局配置,初始化数据数据库系统使用。
  服务器登陆控制系统:用于房间客户端打服务控制系统登陆效验使用。
  游戏房间控制系统:用于控制游戏房间的启动,停止,添加,删除,管理等。
  游戏组件系服务器是什么统:用于具体游戏服务,被游戏房间控制系统挂接,提供游戏服务。
  游戏大服务器地址厅:游戏玩家连接游戏使用。
  二、数据分析系统结构
  系统选用的开发工具是优秀的Microsoft Visual C++.net2003,系统采用客户端/服务器(C/S)编程模式,TCP/IP协议作为客户端和数据库系统的核心是服务器的通信网络层,运用具有性能最优的完成端口(IOCP:Input/Output Completion Port )网客户端英文络开发模型搭建服务器软件客户端英文.客户端采用WinSoc客户端ket API作为模块网络层。
  系统采用多服务器分布式架构,由一个中心服务器(CENTERSERVER),多个主服务器(模块建房MainServer)和多个从服务器(LocalServ数据分析er)同时工作以实现游戏逻辑和用户管理及通讯的功能。中心服务器向客户端提供全局配置,初始化数据(主要是定服务器怎么搭建位一个主服务器IP地址),主服务器管理客户端模块建房用户身份验证、登录以及管理从服务器的建立,由多个从服务器管理游戏通信,大厅及房间,从服务器可任意模块化修仙添加、删除、修改等服务器是什么。
  系统首先启动中心服务器(CENTERSERVER), 中心服务器从INI文件中读取MainServer列表信息, 客户端提供全局配置,初始化数据,然后等待客户联结, 客户联结后CENTERSERVER定位一个MainS数据erver的IP地址和端口号,发往客户端, 客户端收到后断开CENTERSERVER的联接,并马上用Main数据库Server的I模块建房P地址和端口号,和主服务器(MainServer)连接.主服务器从数据库中读取从服务器的所有信息到主服务器的内存。首先读取ComType表以建立所有的游戏类型的基本信息,然后读取ServiceInfo(界面树结点信息表)以获得包括客户端界面结构、从服务器的信息、大厅和房间的一切信息。当有客户端请求登录并成功和主服务器连接的时候,主服务器将这所有的信息一次性发到客户端内存,客户端根据这些信息生成界面结构树。
  主服务器启动后还可以在主服务器里创建多个从服务服务器租用多少钱一年器及房间,创建完成后从服务器的I服务器配置P地址及端口号就作为它的唯一标识被同时写进数据库和主客户端下载安装服务器的内存;房间号、房间所属的游戏数据废土类型、所属的从服务器号也作为房间的唯一标识被同时写进数据库和主服务器的内存。
  从服务器创建以后就在它所属的机器上启动。
  客户端登录后首先和主服务器建立连接(并且一直到客户端退出才断开)连接成功后生成界面结构树(前述),当用户点击某个游戏房间的时候系统从内存中读出这个房间的所有信息(前述),根据房间所属从服务器的IP地址模块是什么及端口号服务器怎么搭建试图和这个从服务器建立连接,连接成功后相应的从服务器就将这个房间的所有信息发到这个客户端,客户端收到以后就根据这些信息生成房间。每当有客户端的游戏位置发生改变的时候就向从服务器发送改变信息,从服务器保存、修改所有与它连接的客户端的位置信息列表。
  当一张桌子坐满时游戏开始。游戏开始后客户端也是数据库和从服务器通信以更新游戏信息。 当客户端模块建房和砖混建房哪个更好退出游戏后就回到大厅的这模块结构图个房间,当退出大数据恢复软件免费版厅的时候首客户端打开先和从服务器断开连接,模块化设计然后和主服务器断开连接,最后终止整个客户端程序。
  三、模块结构
  系统包括三大主要模块结构:MainServer,LocalServer,Com.此外服务器内存条和普通内存条区别还有客户端安装,更新模块等。在三大主要模块结构中还有子DLL(动态链接库)模块。
  1、MainServer(EXE项目):封装主服务器功能,包括管理客户端用户身份验证、登录以及管理从服务器的建立,数据库读写等。
  2、LocalServer(EXE项目):封装从服务器功能,包括管理客户端游戏通信,游戏逻辑,大厅及房间等。
  3、Com(EXE项目):封装客户端所有功能,包括客户端登录,大厅及房间,客户端游戏通信,游戏逻辑等。Com包括以下子模块:
 服务器 客户端通用库P模块化设计ubLib(DLL模块)封装了客户端通用的调用接口,控数据库原理及应用件,类。供客户端所有的模块调用.
  麻将游戏通模块化设计用库MJLib(DLL模块)封装了客户端麻将游戏通用的调用接口类服务器内存条和普通内存条区别和十堰麻将类。通用的调用接口类供特殊的麻将游戏模块调用。
  扑克牌游戏通用库PisaLib(DLL模块)封装了客户模块建房被叫停端扑克牌游戏通用的调用接口类。通用的调用接口类供特殊的扑克牌游戏模块调用。
  大厅库RoomLib(DLL模块)封装了客户端大厅的调用接口。
  数据库象棋库XQLib(DLL模块)封装了客户端象棋的调用接口。
  围棋库XQLib(DLL模块)封装了客户端围棋的调用接口。
  军棋库XQLib(DLL模块)封装了客户端军棋的调用接口。
  服务器架构示意图:
  组件模块结构示意图:
  组件模块以中心数据管理模块为中心,数据数据库库处理数据库系统概论第五版课后答案模块和SOCKET管理模块提供外部操作联系。以下是对每个模块的功能数据分析和接口的介绍:
  中心数据管理模块继承于CBaseMainManage服务器租用类,主要是协调各个模块的联系,处理模块的逻辑处理数据库,保证数据的完整性和合理性和合法性。中心数据管理类是单线程类,使用单线程的目的是为了使数据的处理避免了同步问题,数据的操作不需要使用临界变量锁数据库系统工程师定数据,加快了处理数据结构速度,但前题条件是数据处理中,不能出现长时间的数据等待,锁定操作存在。中心数据管理类实现了IServerSocketService网络数数据库技术据数据恢复处理接口和IDataBaseResultService数据库结果处理接口,提供了网络模块和数据库模块的进入接口,这两个接口是供网络模块和数据库数据库系统的核心是模块调用(意思就是调用线程不是于中心管理模服务器系统块的处于同一线程内,要注意数据数据库系统的核心是同步问题)。数据管理模块对于这些接口调用的处理方式是先把投入的数据处理包分类,分别分为网络定时器数据包,网络服务器租用读取数据包,网络连接关闭数据包,数据库结果数据包,打包为数据管理类识别的数据形式,投递到数据管理类的处理队列,等待数据管理类处理。当中心数据管理类需要投递数据库操作的时候,就通过数据管理类的IDataBaseHand客户端已经从游戏服务器连接断开leSer服务器vice接口投递请求(异步方式),当数据库处理完毕后,数据库管理模块会调用中心管理类的IDataBaseResultService数据库结果接口。
  SOCKET 管理模块CTCPSocketManage类,主要是实现了管理网络连接资源,处理网络SOCE数据分析T的读写操作,主要提供了单SOCKET发送函数,群发SOCKET函数,SOCK服务器ET关闭函数,提供SOCKET事件通模块化手机知。网络管理类是多线程处理类。单 SOCKET 发送函数是 SendData 函数,存在着多种重载实现,提供不同的数据发送请求,群发 SOCKET 函数是 Se数据恢复软件免费版ndDataBatch 函数,关闭 SOCKET 函数是 CloseSocket 函数,存模块化编程在着多种重载实现,当发送了网络消息读取事件,此类主要是通过调用OnNetM数据分析师essage 虚拟函数,利用ISer数据库技术verSocketService接口把数据读取数据包投递到中心数据管理类。当网络关闭的时候,也通过IServerSocketService接口把数据读取数据包投递到中心数据管理类。(详细的实现见代码)
  主要有的线程数据透视表介绍:
  st客户端是什么意思啊atic unsigned __stdcall Threa客户端打开dAccept(LPVOID pThreadData) (S模块化设计OCKET 连接应答线程)
  网络应答线程,等待外部连接,激活一个空闲数据库管理系统的 SOCKET 对象,设置 SOCKET 参数,并把这新的 SOCKET 对象绑定到服务器租用多少钱一年完成端口,然后投递缓冲区为零的数据读取操作调用,继续等待下一个外部连接,详细的算法见代码。
  static unsign数据库系统ed __stdcall T数据库系统工程师hreadRSSocket(LPVOID pThreadData) (SOCKE客户端已经从游戏服务器连接断开T客户端打开 数据接收线程)

  一个网络管理类提供了 CUP2+2 个 SOCKET 消息响应线程,负责处理网络数据的发送,读取,关闭消息处理,详细的算法见代码。
  static unsigned __stdcall T服务器内存条和普通内存条区别hreadBatchSend(LPVOID pT客户端打开hreadData) (SOCKET 批量发送数据线程)
 模块建房被叫停 一个网络管理类提供了一个数据群发线程,负责处理数据的群发异步操作。此线程采用优化的队列方式处理群发数据,避免了队列的数据移动而带来的数据拷贝操作,加快了处理速度,详细的算法见代码。
  static unsigned __stdcall ThreadKeepActive(LPVOID pThreadData) (SOCKET 维护线程)
  一服务器租用个网络管理类提供了一个S数据恢复软件免费版OCKET 维护线程,负责维护断线或者超时的 SOCKET 对象,每个 SOCKET 对象自动被激活开始,服务器是什么服务器就会大约 15 秒向客户端发送一个检测数据包数据库,客户端会在收到此检测数据包的时候马模块上向服务器返回同样的检测数据包。在这前题条件下,维护线程就会大约 15 秒向所有的 SOCKET 对象数据库管理系统都发送一个检测数据包,并关闭掉没有响应的 SOCKET 对象,详细的算法见代码。
  数据库管理模块,主要包括了数据库管理CAFCDataBaseManage类和数据库处理CDataBaseHandle类(继承于IDa模块化手机taBaseHand客户端英文leService接口)。CAFCDataBaseManage只实现了数据的连接、关闭操作和数据库操作请求的投递客户端已经从游戏服务器连接断开任务,数据而实际的数据处理是根据不同的模块进行不同的数据库处数据库理操作,通过CDataBaseHandle实现服务器租用多少钱一年实际的数据操作。这样就避免了不同的数据库操作重复编写数据库的维护,连接等代码。CAFCDataBaseMan数据废土age在会启动一个DataServi数据结构ceThread线程,等待数据库处理请求操作数据包,交到类的成员变量CD客户端和服务端区别ataBaseHandle指针处理。
  模块编写实际类分布:
  每个游戏模块(继承于I模块是什么ModuleManageService接数据库系统口),都包含了数据管理模块(继数据结构承于CBaseMainManage类)和数据库处理模块(继承于CDtaBaseHandle类),实现了模块的启动,停止,初始化,卸载功能,每个模块需要继承重写的部分就是数据库处理模块和数据管理模块。
  数据管理模块包含了此组件的模块化修仙数据信息,逻辑处理,负责处理和发送网络数据包,更具需要投递数据库处理请求,处理数据库处理结果。实现了网络数据包投递接口,数据库处理结果处理接口。
  数据库处服务器怎么搭建理模块包含了处理数据库请求处理,发送数据库处理结果到数据管理模块处理。实现了根据请求,实现合适的数据客户端打开库操作。

  数据库管理类和网络管理类对象存在于CBaseMainManage类中,模块化编程而实际的数据库操作类是个独立的类,存在于模块管理类中,在模块客户端是什么意思啊初始化的时服务器地址候把此类的对象指针传递到数据库管理类,供数据库管理类调服务器系统用。
  游戏房间模块示意说明:
  游戏房间模块是应用得最多模块之一,于其他模块最大的服务器不同点的是中心数据管理类(继承于CbaseMainManage类的CComMainManage类)
  数据管理类继承于基础数据管理类,还存在CComUserInfoManage用户管理类和CComD模块化手机esk游戏桌子类对象数据数据库设计。
游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|棋牌源码吧

GMT+8, 2024-11-24 20:32 , Processed in 0.073435 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表