功能基本上是完成了,要两个人完才好玩,目前 倒计时,每组游戏玩家数量这些控制变量,都是写死再代码里的,等以后想改的时候再改,这个项目核心的功能算是实现了,但还可以扩展,比如记录一下用户的游戏数据,答对多少次,胜利多少次,答出的历史成语有哪些,每人有三次机会获得服务器帮助答题。改变用户昵称,签到多少天,获得一次免答特权等。这些都是锦上添花的功能,等我想做的时候在去做吧。
做这个我主要了解了socket的异步接受方法,不用自己去开线程去接受数据,非常的方便,我做的时候把 winform的线程检查关闭了,不然,在不是winform的线程下去更新winform的控件,要写invoke 用委托方法去更新控件,非常的麻烦,但这里要注意的是,timer控件即使是在关闭了winform的交叉线程检查,也得使用invoke的方式去使用,不然这个timer的tick事件不起作用。做这个感觉,把所有消息用个case来区分,不是很科学,消息多了,就要写很多的case,但又没想到什么其他方法,基本上网上的例子都是用switch来做不同的消息动作。构建一个好的json对象来传递数据却是是方便。但是我为了方便,把数据包写死了,如果json大小超过了数据包大小,得到的json字符串就不完整,程序就会在json转对象的地方出错,目前的数据包大小是满足程序的,后面可以试试改改,在发送正真的内容前,先发送一个表示数据大小,包的个数的固定包过去,每次先读固定包,然后再接受数据。