游戏服务器2

接着前面的游戏服务器1写,实现了用spserver+rapidxml在windows平台上的穷人版服务器,可以对指定游戏进行分数排行,以及留言版的功能。等过段时间把域名神马的弄好了就可以给我在线留言了。穷人版专属博客?呵呵

需要记录的几点:

1。spserver中对于SP_HandlerFactory和SP_Handler和SP_LineMsgDecoder的使用。网络事件的处理是在SP_Handler的子类中重载函数完成的,SP_HandlerFactory的子类的实例对应一个TCP连接,维护一个SP_Handler子类的实例。SP_LineMsgDecoder的实例在SP_Handler中可以获得实际的网络数据,比如这样:

SP_LineMsgDecoder *decoder=(SP_LineMsgDecoder*)request->getMsgDecoder();

const char* tmp = decoder->getMsg();

那么getMsg();中将返回char*的数据。一般来说网络数据报的格式由我们自己定义,那么用xml来操作就很方便,下面是使用rapidxml解析getMsg();返回值字符串的一部分代码:

if (XMLRoot->first_attribute("name")) strcpy(node.name, XMLRoot->first_attribute("name")->value());
if (XMLRoot->first_attribute("score")) strcpy(node.score, XMLRoot->first_attribute("score")->value());

2.如果需要在spserver中与文件操作协同工作,请对文件加锁,因为并发过程中可能会有访问冲突:

sp_thread_mutex_t mMutex;//定义

sp_thread_mutex_init(&mMutex,NULL);//初始化

sp_thread_mutex_lock(&mMutex);//加锁

sp_thread_mutex_unlock(&mMutex);//解锁

sp_thread_mutex_destroy(&mMutex);//析构

如果觉得仍不安全(我没验证,谨慎而已),可以在此基础上再用个单件模式。



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值