这一段时间一直没写题,也没怎么写博客。因为一直在做一个小游戏。
其实这是一个非常简单的控制台小游戏,主要逻辑都在本地,但是与以往的那些程序不一样的是,这次加入了联网功能——排行榜。
首先确认了通讯协议为保证可靠的TCP
但是TCP是没有边界的流式传输,然而我们使用带边界的数据包结构。于是写了一个叫做MapBox的数据包装类,内部基础是STL的map,使用string-string键值对。
由于基础设施sock类含有泛化接口sock::send(T&)和sock::recv(T&),因此MapBox只需要实现这个接口的适配版本即可. 使用toString()接口转化MapBox为string对象,使用Len+Value通过基础类发送,接收部分使用Len+Value通过基础类接收,根据分隔符重新制作成MapBox
这个MapBox目前已经十分稳定,但是还有几个缺点:
1. 通过截取数据包发现发送的数据是明文,不利于敏感数据的传输
2. 内部使用了Base64算法进行编码,这导致MapBox不能存储大于200MB的内容.
搞定MapBox后,游戏的联网部分就没有什么难度了。
在制作完成之时,我突然想到,如果每个游戏都需要一个账户和密码,那用户需要记住多少密码啊,于是我又开始想办法搞一个统一登录这样的东西。
但是网站的根基是PHP,难以和本地C++程序通信。于是使用了一个Midware用于PHP和C++通信。
都搞定之后,我把统一验证的这个机制加入到了游戏中。测试了一下,似乎还不错,能做到申请完用户立刻就能登录。
现在唯一缺少的就是美工啦>_< 自己不会PS和CSS完全不知道怎么才能让网站好看一点T_T...
最后,欢迎访问我的网站 GameHarbor(CN)