免费的微网站,免费网站安全软件下载安装,手机可以搭建网站么,网站建设案例查询最近一段时间不是很忙#xff0c;就写了一个自己的游戏服务器框架雏形#xff0c;很多地方还不够完善#xff0c;但是基本上也算是能够跑起来了。我先从上层结构说起#xff0c;一直到实现细节吧#xff0c;想起什么就写什么。 第一部分 服务器逻辑 服务器这边简单的分为三… 最近一段时间不是很忙就写了一个自己的游戏服务器框架雏形很多地方还不够完善但是基本上也算是能够跑起来了。我先从上层结构说起一直到实现细节吧想起什么就写什么。 第一部分 服务器逻辑 服务器这边简单的分为三个部分客户端的连接首先到达网关服务器网关这里有个线程用来监听来自与客户端的连接然后在将这些数据发送到游戏逻辑服务器上这个逻辑游戏服务器上数据的交互就是通过与数据服务器进行交互。RecordServer专门用来处理与数据库的连接查询这些事情。当然为了游戏服务器能够最大程度的不卡肯定就得规定好网关服务器上的连接数量免得像我们号称流畅的铁道部订票网络一样做个卡B想想玩一局dota被卡的悲剧吧。当我们要做一个大型网游时这三个服务器显然不够。当然在自己写的小游戏的时候就无所谓了。 这个感觉写得就差不多了到细节吧。 第二部分 实现细节 这个就比较乱了零零散散的随便写了。这里很多都是对各种工具的封装以便于自己 在项目的使用 1.make 项目这么多目录这么多子目录肯定得用工具去编译了使用aclocal,automake,autoconf,make,就把我们的程序编译好了编写自己configure.in文件定义编译选项、链接库等等一系列乱七八糟的东西然后对每个需要编译的子项目编写Makefile.am,有的需要要编译成库的比如base等基类这些其他的都编译成可执行文件了GatewayServer,LogicalServer,RecordServer。 2.套接字封装epoll使用 linux里我们使用socket来读写网络上的数据这个很简单了gateway上一个客户端连接过来我们就为它分配一个socket 描述符了在网关上一个线程用来accept,一个线程用来做数据的处理当accept一个连接请求后放到数据处理的线程接受到一个数据然后直接转发到logical server上我们使用epoll_wait来处理套接上的读写处理。每n ms处理一次循环每次循环中使用一次epoll_wait一次把这些有事件的socket取出来。 3.数据加密解密压缩解压 对网络上的数据为了保证安全性必须对它们进行加密解密处理这个简单了网上各种内容这里就不说了全部写完了有时间再写。对数据进行压缩能减少带宽吞吐就是简单的调用几个zlib函数的调用不细说在前面转发的《zlib使用》中有讲发现自己太懒实在是懒得打字了。 4.线程封装互斥量读写锁 这些都是简单的使用RAII或其他方式对这些东西进行一次本地封装。应该得写一个线程池去管理这些线程todo 5.数据库封装 使用mysql,使用mysql的C API函数这个必须得封装一下不是每次数据的处理都得去做很多事情实现一个本地的数据的Field(列),Record记录,Table表,DataBase数据库,RecordSet(查询结果集)。制作一个数据库连接句柄MysqlHandle处理对数据库的连接处理等实现一个HandlerPool,每次从Pool中取出一个句柄来对数据库进行查询免得每次都去重新连接什么的。 6.自己的内存池 在之前分享的文章中《内存池技术详解》《编写自己的内存分配器》自己的《内存池应用》已经很详细的说明了内存池的制作当然我在这里还是有一些改动的但是大概思路就是这些了。 7.有一个状态机的实现 这个也在自己之前写的那个状态机相关的文章里也做记录了。哈哈实在是不想继续码字了但是还是坚持下去。 8.lua与c交互框架 这个暂时写了一半等全部完成了再来弄反正就是像npc处理这些脚本处理这些使用tolua。 9.tinyxml封装正则表达式封装 tinyxml一个轻量级的xml解析器很简单反正是把这些现成的东西拿来自己用。正则表达式没有进入c标准但是还是很多现成的正则表达式的处理直接用linux库下的regex.h,就是编译正则表达式匹配结果这些 10.log系统 一个项目怎么能没有自己的日志系统呢反正就是打日志往文件里面写东西用std::fstream轻松搞定定义好日志级别:error / debug / fatel / info这些 11.时间封装 这个必须有否则自己还每次去调用get_clocktime,gmtime,time各种函数呀。 12.使用boost库里的Noncopyable,Singleton这些设计方法来写我们的代码 13.定义好各种信号句柄信号发生时采用什么策略如SIGPIPE做忽略处理 待续。。。。。。。。睡觉了 游戏服务器技术应该算来已经很成熟了相比客户端它的技术更新速度很慢了。客户端这边技术很多各种游戏引擎比如3D的虚幻这些什么粒子引擎声音这些页游的flash, html5,utility等等我都不懂。我先把服务器这边好好学习一下其他的等以后再说吧