システムプログラミング 第10回 プロセス間通信3 簡易Web server(準備) Chat プログラム 担当:青木義満、篠埜 功 情報工学科 3年生対象 専門科目 システムプログラミング 第10回 プロセス間通信3 簡易Web server(準備) Chat プログラム 担当:青木義満、篠埜 功
Web server プログラム inet_server.cを修正 accept及びread, writeをfor loopで繰り返す。 反復サーバ方式 クライアント(ブラウザ等)からのメッセージ GET /index.html HTTP/1.0 (1行目) 2行目以降は各種情報 応答メッセージ HTTP/1.0 200等(1行目)で応答の種別、2行目から各種情報の後、ファイル本体を送る。
Web server プログラム 実行手順 $ gcc –o web_server0 web_server0.c $ ./webserver0 test.html (webserver0を実行するディレクトリにtest.htmlを置いておく) その後、ブラウザで、 http://oli005.sic.shibaura-it.ac.jp:50000/aaa.html などを入力する。 :のあとに、web_server0.cで指定したweb serverのポート番号を入れる(50000+学籍番号の下4桁)。ホスト名部分はwebサーバーを起動するホスト上でhostnameコマンドで確認する。 $ hostname oli005.sic.shibaura-it.ac.jp など。今はファイル名はサーバ側で決め打ちなので、ブラウザに入れるファイル名は何でもよい。
レポート課題 web_server0.cでは、送るファイルをサーバー起動時の引数に与えていたが、クライアントで指定したファイル(サーバ起動ディレクトリ等、自分で決めたディレクトリからの相対path)が存在する場合にそれを送り返すプログラムを書け。 締切: 次回の講義(1月13日(火))の開始時刻まで。 提出は以下に電子メールで送信。 sasano@sic.shibaura-it.ac.jp 提出内容 web_server0.cに変更を加えた部分についての簡単な説明文書 変更したプログラム(ファイル名はweb_server1.cとする)
通信方式 同期通信 非同期通信 プロセス間の通信(データ送受信)のタイミング,スケジュールが規定された通信 送りたいときに送り,届き次第受け取る方式 データが届くまで他の作業をすることが可能 複数の入力を待つアプリケーションも可能 例) ソケットとキーボード、など複数のファイル記述子から非同期に入力があるような場合、入力を判断して該当するファイル記述子からデータを読み出す、等
通信方式 同期通信 非同期通信 プロセス間の通信(データ送受信)のタイミング,スケジュールが規定された通信 送りたいときに送り,届き次第受け取る方式 データが届くまで他の作業をすることが可能 複数の入力を待つアプリケーションも可能 例) ソケットとキーボード、など複数のファイル記述子から非同期に入力があるような場合、入力を判断して該当するファイル記述子からデータを読み出す、等 → 簡単な “チャットプログラム” の作成!!
INETソケット通信を用いた チャットの実現 「キーボードから入力したメッセージを相手の画面に表示し、相手がキーボードから入力したメッセージを自分の画面に反転表示するプログラム(inet_server_chat.c, inet_client_chat.c)」 必要な機能 サーバー、クライアント共にキーボード、ソケットの両方からの入力を常に監視 キーボードとソケットのそれぞれのファイル記述子から入力があるかどうかを、select()システムコールを使って、チェック