【问题标题】:How to solve this network race condition?如何解决这种网络竞争状况?
【发布时间】:2012-12-17 03:09:50
【问题描述】:

我有一个多人扑克游戏,其中许多客户端连接到服务器。比赛目前处于最后一轮投注中。一个客户决定不玩下一手牌并向服务器发出他正在坐下的信号,但在服务器将手牌发给客户端之后,坐下信号到达。因此,选择坐下的客户在他不应该坐的时候得到了帮助。我该如何解决这个问题?这是一张图表。

   client        server
 | send(sitout)
 |               send(hands)
 |               recv(sitout)
 V recv(hand)

【问题讨论】:

  • 听起来你是说庄家在得到每个玩家的“是”或“否”之前不应该发牌,对吧?所以这就是解决方案:每个客户端在交易之前都需要确认服务器。

标签: networking race-condition


【解决方案1】:

客户端应该发送“Sitout”或“Ready”信号,然后服务器将决定是否将手交给客户端。

解决竞争条件不是及时倒退!在获得有关他将要做什么的所需信息之前,没有实体(在这种情况下是服务器)可以做任何事情:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    • 2016-12-10
    • 2020-08-25
    相关资源
    最近更新 更多