game server responsibility:
- Initialize the server socke;
- Wait for a client to connect;
- Accept the client connection;
- Create a daemon thread to support the clien;
- Go back to step 2.
game daemon responsibility:
- Accept client player connection;
- Pair up players to form separate game;
- Manage the flow of the game;
- Communicate each player's move to the other player;
- Notify the players of the state of the game.