算術式の評価(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)
© Copyright 2025 ExpyDoc