- TCPソケットによるじゃんけんプログラム
- ソースコード: http://github.com/koheis612/np_final/
-
クライアント側はサーバーに手(rock, paper or scissors)を送る。
-
サーバ側は乱数によって手(rock, paper or scissors)を決め、勝敗を判定。結果をクライアント側に送信する。
- 結果は win, lose, draw, bad のいずれか
- bad は rock, paper, scissors 以外の手が出された時に送信される。
-
クライアント側で勝敗数を記録
-
IPv4/IPv6 デュアルスタック対応
listen_tcp()
関数でソケットを生成、 bind し, コネクションの確立要求を listen する- 接続要求が来たらコネクションを accept し、 fork する
- 子プロセスの生成に成功したらクライアントが送信するまで待つ
- クライアントが送信した文字列を
judge()
関数に渡し、結果をクライアントに返却- 以降、接続要求ごとに 2 から 4 を繰り返す
connect_to_server()
関数でソケットを生成し、引数で受け取ったアドレスに接続を生成する- 文字列の入力を待ち受ける
- 入力された文字列は改行を取り除いたあとで、サーバへ send する
- サーバから送られてくる勝敗の判定を recv する
- recv した文字列によってスコアを算出
- 以降、文字列を送るごとに 2 から 4 を繰り返す