接着前面的游戏服务器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());
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);//析构
如果觉得仍不安全(我没验证,谨慎而已),可以在此基础上再用个单件模式。