2012-12-16 2 views
0

많은 클라이언트가 서버에 연결하는 멀티 플레이어 포커 게임이 있습니다. 게임은 현재 베팅의 마지막 라운드에 있습니다. 한 고객은 다음 핸드를하지 않기로 결정하고 서버에 신호를 보내지 만, 서버가 클라이언트에게 손을 넘긴 후에 신호가 도착합니다. 따라서 앉아있는 고객은 그가 생각지 않았을 때 손을 잡았습니다. 이 문제를 어떻게 해결할 수 있습니까? 다음은 다이어그램입니다.이 네트워크 경쟁 조건을 해결하는 방법은 무엇입니까?

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

딜러는 "예"또는 각 플레이어의 "nay"가 맞습니까? 이것이 해결책입니다. 각 클라이언트는 거래 전에 서버를 ACK해야합니다. – paulsm4

답변

1

클라이언트는 "Sitout"또는 "준비"신호를 보내야하며 서버는 클라이언트에게 손을 넘겨 주겠다고 결정합니다.

경쟁 조건을 해결하는 것은 시간을 거슬러 올라가는 것이 아닙니다! 엔티티 (이 경우 서버)는 그가 할 일에 대해 필요한 정보를 얻기 전에 무엇이든 할 수 있습니다.

관련 문제