小弟在写一个仿三国杀的游戏,里面会有客户端跟服务端的交互,有这样一个多线程控制的问题。客户端在自己的回合内,有三十秒时间可以操纵,比如客户端在这30秒内可以attack(), 会发送attack信息到服务器端,倒计时器是在服务器端的,服务器端收到操作消息就会停止计时,执行操作。
若30秒服务器端都没有收到操作消息,那么就计时终止,会告诉客户端“倒计时完”,不再接收这个客户端的消息,开始别的操作。同时客户端在接收到“倒计时完”后,也会disable所有按钮,防止操作。我的问题发生在这里,加入客户端在30秒的时候attack了,但是由于网络延迟,这个时候服务器端还没有收到消息,服务器端误判客户没有操作,于是发送“倒计时完”,这个时候客户端就会disable,但是attack的消息已经发出了,服务器接收到后肯定会造成混乱。有没有什么比较好的解决办法针对这类问题?小弟自学的socket,不是很了解。感谢了!