skjune12 / np_final

2015年度秋学期ネットワークプログラミング(木2)最終課題

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ネットワークプログラミング最終課題

概要

機能

  • クライアント側はサーバーに手(rock, paper or scissors)を送る。

  • サーバ側は乱数によって手(rock, paper or scissors)を決め、勝敗を判定。結果をクライアント側に送信する。

    • 結果は win, lose, draw, bad のいずれか
    • bad は rock, paper, scissors 以外の手が出された時に送信される。
  • クライアント側で勝敗数を記録

  • IPv4/IPv6 デュアルスタック対応

プログラムの流れ

server.c

  1. listen_tcp() 関数でソケットを生成、 bind し, コネクションの確立要求を listen する
  2. 接続要求が来たらコネクションを accept し、 fork する
  3. 子プロセスの生成に成功したらクライアントが送信するまで待つ
  4. クライアントが送信した文字列を judge() 関数に渡し、結果をクライアントに返却
    • 以降、接続要求ごとに 2 から 4 を繰り返す

client.c

  1. connect_to_server()関数でソケットを生成し、引数で受け取ったアドレスに接続を生成する
  2. 文字列の入力を待ち受ける
    • 入力された文字列は改行を取り除いたあとで、サーバへ send する
  3. サーバから送られてくる勝敗の判定を recv する
  4. recv した文字列によってスコアを算出
    • 以降、文字列を送るごとに 2 から 4 を繰り返す

About

2015年度秋学期ネットワークプログラミング(木2)最終課題


Languages

Language:C 97.9%Language:Makefile 2.1%