通信機構を実行する部分 通信機構を実行する部分

算術式の評価(eval)を題材として、スレッドを用いたTCPサーバ・クライアントのシステム
ThreadTCPEvalServer
ThreadTCPEvalClient
スレッド(C1)
①標準入力から算術式を文
字列として受け取る。
②受け取った算術式を、通
信データとしてサーバに送る。
(ここで、通信機構を実行す
る部分のデータ送信機能が
働く)
③サーバからの返信を結果
として得る。 (ここで、通信機
構を実行する部分のデータ
受信機能が働く)
④その結果を表示する。そし
て、再び、①から繰り返す。
スレッド(C2)
スレッド(S2)
”1+2”
通
信
機
構
を
実
行
す
る
部
分
通
信
機
構
を
実
行
す
る
部
分
スレッド(S1)
①算術式を、通信データとし
てクライアントから受け取る。
(ここで、通信機構を実行す
る部分のデータ受信機能が
働く)
②受け取った算術式を評価
し結果を得る。
(ヒント:eval(expr)は、文字
列exprを式と見なして評価
実行し、式の値を得る)
③その結果をクライアントに
返す。
(ここで、通信機構を実行す
る部分のデータ送信機能が
働く)
④そして、再び、①から繰り
返す。
”1+2=3”
サーバに対して必要なサービス
を要求する部分
クライアントから要求された必要
なサービスを実行する部分
スレッド(C1)
ThradTCPEvalClient.py(Serverに委託して算術式を評価する)
expr
result
スレッド(C2)
ThreadTCPクライアントの通信機構
(client.pyの通信機能の部分を再利用)
算術式の評価を、Server
に要求するメッセージ
算術式を評価した結果を、Client
に返信するメッセージ
スレッド(S2)
ThreadTCPサーバの通信機構
(thread_server.pyの通信機能の部分を再利用)
expr
result
例外
result = eval(expr)
ThreadTCPEvalServer.py(Clientの要求に応じて算術式を評価する)
スレッド(S1)