Download presentation
Presentation is loading. Please wait.
Published byEdison de Abreu Taveira Modified 約 6 年前
1
担当:青木義満 yaoki@sic.shibaura-it.ac.jp
情報工学科 3年生対象 専門科目 システムプログラミング 第10回 プロセス間通信3 担当:青木義満
2
通信方式 同期通信 非同期通信 プロセス間の通信(データ送受信)のタイミング,スケジュールが規定された通信
送りたいときに送り,届き次第受け取る方式 データが届くまで他の作業をすることが可能 複数の入力を待つアプリケーションも可能 例) ソケットとキーボード、など複数のファイル記述子から非同期に入力があるような場合、入力を判断して該当するファイル記述子からデータを読み出す、等
3
通信方式 同期通信 非同期通信 プロセス間の通信(データ送受信)のタイミング,スケジュールが規定された通信
送りたいときに送り,届き次第受け取る方式 データが届くまで他の作業をすることが可能 複数の入力を待つアプリケーションも可能 例) ソケットとキーボード、など複数のファイル記述子から非同期に入力があるような場合、入力を判断して該当するファイル記述子からデータを読み出す、等 → 簡単な “チャットプログラム” の作成!!
4
INETソケット通信を用いた チャットの実現
「キーボードから入力したメッセージを相手の画面に表示し、相手がキーボードから入力したメッセージを自分の画面に反転表示するプログラム(inet_server_chat.c, inet_client_chat.c)」 必要な機能 サーバー、クライアント共にキーボード、ソケットの両方からの入力を常に監視 キーボードとソケットのそれぞれのファイル記述子から入力があるかどうかを、select()システムコールを使って、チェック
5
ファイル記述子の監視 〜select() システムコール〜
6
ファイル記述子の集合を操作するためのマクロ
FD_ZERO(fd_set &fds) 集合fdsをゼロクリアする FD_SET(int fd, fd_set &fds) 集合fdsにファイル記述子fdを設定 FD_CLR(int fd, fd_set &fds) 集合fdsからファイル記述子fdを解除する FD_ISSET(int fd, fd_set &fds) 集合fdsの中のファイル記述子fdが入出力可能(真)かどうか調べる
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.