Swa-server 开源框架
* 适用于中小型游戏,如:养成、RPG、棋牌等;应用软件,如:聊天室等
* 已经封套好底层socket管理,sql请求处理、数据加密解密
* 拿来便可开工写业务
* Swa-server是面向小型快速开发的框架,因此采用单进程模式,之后更新也是单进程方案去解决所遇到的问题,这样能够减小开发时间与人力(其实不少服务器用单进程就够了)mysql
* 支持IO异步(基于boost库IO)
* 支持sql异步执行(有回调函数)
* 玩家管理器
* 数据库管理器git
项目中例子
* 一、请求得到动态密码
* 二、请求登陆(包括mysql查询处理返回等)github
安装流程
* 一、安装一个vs2012
* 二、下载本项目的代码
* 三、下载第三方库(boost与mysql),mysql已经编译好地址:http://pan.baidu.com/s/1qW7b42S,boost版本过大,自行到官网下载,版本为1.55
* 四、安装mysql数据库,并导入项目的sql文件
* 五、编译运行,使用项目中客户端测试sql
结构图:数据库
Shared为了个静态共享库,该库主要包括了socket管理,数据库管理服务器
运行图框架
服务器启动过程 (下面代码):异步
int main(int argc, const char * argv[]) { // 初始化服务器所都要准备好的数据 Init(); // 启动服务 ServerStart(); // 执行退出的相关操做 RunServerExit(); return 0; } void Init() { // 初始化化协议 InitNetMsg(); // 加载配置 g_rGameCfg.LoadRes( "../conf/gameconfig.xml" ); // 服务器相关配置 const GameConfigInfo& rGameCfgInfo = g_rGameCfg.GetGameConfigInfo(); // 加载服务器须要的资源 g_rResourceMgr.LoadAllRes(rGameCfgInfo.arrConfigPath); // 初始化数据库 if(DBServerInit(rGameCfgInfo)) { // 初始化Scoket服务 gNetServer = NetServerMgr::Instance()->AddNetServer(); gNetServer->SetAddress( rGameCfgInfo.arrServerHost , rGameCfgInfo.nServerPort); gNetServer->SetHandler( OnNetMsgEnter , OnNetMsg , OnNetMsgExit ); // 初始化待链接玩家数据 g_rPlayerMgr.Init(*gNetServer); // 启动Socket服务 gNetServer->Start(); FLOG4( "SERVER STARTED." ); // 辅助命令初始化 gGameCommand.Init(); } }
启动过程作好一切初始化的工做,加载配置、建立全部的socket、player、数据库对象等,而后设置socket链接、收到消息、退出的回调函数socket
这里的socket与player的实例ID是同样的,他们也绑定在一块儿管理,这样很方便函数
当一个socket进来就能够直接到了player,当一个socket退出,这时会初始化player与socket数据,而后再设定他们从新等待链接进入
主要代码在NetSocket,NetServer,Playaer
NetSocket
NetServer::NetServer() : m_cAcceptor( *this ) { static int32 s_nIncreaseNetServerID = 0; m_nServerID = ++s_nIncreaseNetServerID; for ( int i = 0 ; i < MAX_SOCKET_CONNECT ; i++ ) { m_arrSocket[ i ] = new NetSocket( *this ); } }
Player
void PlayerMgr::Init(NetServer& rNetServer) { for ( int32 i = 0 ; i < MAX_SOCKET_CONNECT ; i++ ) { SWA::NetSocket& pSocket = rNetServer.GetSocket(i); ASSERT(pSocket.SID() == i); m_arrPlayerCache[i] = new Player(pSocket); } }
若是园友想直接用,就直接看例子代码便可上手,若是想研究了解,则多看Shared中的NetSocket,NetServer,NetIOBuffer类等类
若是园友有什么问题能够在这里提问,或联系我QQ:296464231
源码已经放到了github : https://github.com/huangzuduan/swa-server