socket通信中的同步问题(Maybe是这样说吧)
问题描述:
我写的一个网络对战五子棋游戏中的CMySocket类是继承自CSocket,我的程序逻辑中有以下情况:
甲方与乙方轮流下子,归一方下子时另方不能下子。一方下子后会向另一方发送棋子相关信息,并将本方允许下子标志置为FALSE,而对方读取消息后会将它那方的允许下棋标志置为TRUE。
甲方下子后,在乙方尚未下子前这段时间内,允许甲方悔棋一次,悔棋后甲方重下,照正常逻辑乙方不准下子。
在我与同学局域网测试的过程中,发现一个问题,就是
我下了子之后,我点了悔棋按钮,而几乎在同时同学点了下子,而这时棋盘上的状况是我悔棋也悔了,而同学的子也下了。
我对出现这种状况的理解是(假设我点悔棋按钮在对方下子之前)
我点悔棋之后,本方socket向对方Send数据,也许是由于网络延时消息尚在路上,或者对方已经接收到消息而还没来得及将允许下棋标志置为FALSE。
这个问题应该怎么解决?