synchronizacja dwóch klientów z serwerem

0

witam

napisałem grę w pana w trybie tekstowym, klient-serwer z wątkami.
Klient ma pole int id, które jest ustawiane podczas połączenia z serwerem (pierwszy połączony dostaje id=1, drugi id=2).
chciałem to zrobić tak, by klient był blokowany po wysłaniu komunikatu tekstowego i wykonaniu jakiejś funkcji)
np:
while (!this.thread.interrupted()){
tura=1;
if (this.id=tura){
po interakcji z serwerem;
if tura==1 ustaw tura=2
else if tura==2 ustaw tura na 1
}
}

niestety w takim wypadku wygląda to tak
serwer przydziela klientom id
klient id=1 wysyla komunikat i tura=2,
klient id=2 nie wysle komunikatu i nigdy nie wykona akcji

macie jakiś pomysł, jak blokować na zmiane te dwa pliki klientów??

0

Ja nie rozumiem po co cokolwiek blokować?

Klient wysyła komunikat ze swoim ID.
Serwer sprawdza czy w danej grze dane ID jest aktywne. Jak nie to ignoruje klienta.
Jeżeli jest aktywne to odsyła potwierdzenie wykonania ruchu, zmienia ID na kolejnego gracza i wysyła mu komunikat o ruchu i tym, że jest jego tura.

Żadnej zabawy z blokowaniem wątków bo można popsuć. Wystarczy tylko synchronizować obiekt Gra.

1 użytkowników online, w tym zalogowanych: 0, gości: 1