实习周记IV

来源:互联网 发布:cfve卡枪软件 编辑:程序博客网 时间:2024/04/28 10:41

2014年12月24日 深圳

今天是西方的平安夜,相信家乡的朋友们都在狂欢。

做网络消息模拟器已经三天了,前两天大致了解了C++的网络通讯、多线程和MFC内容,今天就开始着手实现网络消息的配置解析了。

用什么作为配置文件的载体呢?当然是看内容有什么了,一般游戏的通讯内容基本相似,都是由两个short类型作为消息头,用来区别消息类型。网络传输内容如下:

MainType:(short类型)

SubType:(short类型)

Type1:(支持的类型)

Type2:(支持的类型)

...

用Json?还是算了,可读性不高,毕竟策划要看;

用INI?简单易懂,清晰可读。只是不支持嵌套;

用XML?描述性内容过多。不过支持嵌套,可读性较强。

选来选去我将XML做为网络消息的配置文件,XML对自己来说并不陌生,玩Android时最依赖它了。XML的开源解析库并不少,由于自己的项目依赖于cocos2d-x静态库,且cocos2d-x已经包含了开源的tinyxml2,那就不用在费工夫选XML的解析工具了。

在解析配置文件时出现了中文乱码问题,查找了相关文档知道,tinyxml2支持解析ANSI和UNICODE编码文件,自己文件本来就是ANSI,所以不是tinyxml2的问题。

查看VS的项目属性发现,我的VS项目编码为UNICODE,而tinyxml2解析出来的Char*是ANSI编码,二者转换必然乱码。

出问题的代码:

CString csMainName;csMainName.Format("%s",mainName);CString csMainType;csMainName.Format("%s",mainType);

解决方式如下:

USES_CONVERSION;CString csMainName = A2W(mainName);CString csMainType = A2W(mainType);
利用系统定义好的宏,即可正确将char*转换成CString类型,并保证任何字符集下不出现乱码问题。

2014年12月25日 深圳

圣诞节,印象里的圣诞的时候都会下雪,今年是看不到雪了,南方天气太奇葩。

昨天做了XML解析部分,今天就该实现数据传输了。

我采用winsocket的Socket搭建服务器,具体代码网上有很多可查,过程中也没发现什么问题。

需要注意的是,winsocket的accept和recv函数都会阻塞线程,所以应该确保在调用accept时,已经启动了子线程,不然会界面会卡死。


学无止境,加油吧。

0 0
原创粉丝点击