No dobra, ale jak to mam z logicznego puntu ułożyć? kiedy mam odpalać metodę rysującą okno dla klienta? co mam przesłać przez sieć?
Odpowiedzi: kiedy chcesz, co chcesz.
Generalnie swoją wizję opisać musisz sam bo Ty ją znasz lepiej niż ja :)
Zakładam układ klient-host (tak jak są np. dawne gry po LAN zorganizowane - nie ma oddzielnego serwera, tylko dwóch graczy łączy się z sobą bezpośrednio). Obaj powinni mieć opcje "hostuj" i "połącz się", po wybraniu "połącz się" powinno zostać nawiązane połączenie z wklepanym adresem IP.
Protokół musisz napisać sam, najłatwiej będzie stworzyć jakieś serializowalne obiekty typu GameCommand (przesyłanie informacji o akcjach graczy) i GameStatus (przesyłanie informacji o stanie gry - czy ktoś wygrał, czy nie, czyja kolej itp.). Potem je serializujesz do String, String do ByteArray i przesyłasz przez socket do drugiego klienta.
Np.
0. Gracz 1 i Gracz 2 odpalają aplikację.
- Gracz 1 [Maszyna 1] - klika hostuj
- Gracz 2 [Maszyna 2] - klika "dołącz", wklepuje adres maszyny #1
- [Maszyna 1] - tworzy handler do połączenia z maszyną #2.
- [Maszyna 1] - rozsyła informacje o grze do gracza 1 i - przez socket - do maszyny 2 (i gracza 2)
- Gracz 1 wykonuje ruch, Maszyna 1 wysyła informację do gracza 2
- Gracz 1 czeka na ruch Gracza 2
- Gracz 2 wykonuje ruch itp.
Pętla rysująca nie powinna być zależna od wątków obsługujących ruch sieciowy.