2012-12-16 48 views
0

我有一個多人撲克遊戲,許多客戶端連接到服務器。該遊戲目前正處於最後一輪下注中。一位客戶決定不玩下一隻手,並向服務器發出信號,表示他正坐在那裏,但服務器向客戶端發出信號後立即發出信號。因此,當他沒有想到的時候,選擇坐下的客戶有一隻手。我該如何解決這個問題?這是一張圖。如何解決這個網絡競爭狀況?

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

聽起來好像你說發牌者不應該直到他得到「yea」或來自每個玩家的「不」,對吧?這就是解決方案:每個客戶在交易之前都需要確認服務器。 – paulsm4

回答

1

客戶端應該發送「Sitout」或「Ready」信號,然後服務器將決定是否將手交給客戶端。

解決比賽條件並不是要及時倒退!沒有任何實體(在這種情況下是服務器)在獲得需要的信息之前可以做任何事情,他將會做些什麼:)