サーバ起動を選択すると、ポートを 57577 から順番に試し、利用できたポート番号でサーバ処理を行うためにプロセスを fork() する。
スレッドでなくて fork を使う理由は、サーバ起動後、サーバ起動者以外同士が対戦しているときに、サーバ起動者がプログラムを終了しても問題なく対戦を行わせるため。
サーバ起動画面
サーバ起動後は、チャット画面になり、誰かが接続してくるのを待つことになる。
チャット画面
起動中のサーバに対するクライアント側の接続手順は以下の通り。
- 接続開始メッセージを送る ('S');
- サーバからの応答を待つ ('s');
- サーバに存在するユーザ数を受け取る
- サーバに存在するユーザ名を順番に受け取る
接続後は、他の既存クライアントと同列に扱われ、チャット処理の対象となる。 チャット処理とは、各ユーザについて、
を行うものとする。(厳密に言えば、新規ユーザの追加もチャット処理)