0. はじめに

高橋先生担当の前半に引き続き、後半でもプログラミング言語として Python を用います。 Python のプログラミング環境も、前半から引き続き aprog コマンドを用いた仮想環境を利用します(前半第1回の準備)。

演習では、毎回の演習ページで指示された内容を順番に進めて下さい。基本的には、自分自身でプログラムの実行結果や内容を確認しながら演習を進めます。

幾つかの演習課題では、このような色付き枠が表示されています。 これらは、TAによるチェック課題です。 TAによるチェック課題が完了した時点で、Teams による TA予約を行って TAチェックを受けて下さい。 TAチェックを通過すれば、その課題は提出済みとして記録されます。

TAチェックの際、TAから幾つかの質問が行われる場合があります。課題が完了していてもTAからの質問に答えられない場合は、課題の提出が認められないこともあります。 その場合は、課題の内容を理解し直してから、再度TAチェックを受けて下さい。

また、このような色付き枠が表示されている課題もTAによるチェック課題ですが、提出は必須ではありません。 余裕のある人や興味のある人は取り組んで、TAチェックを受けてください。こちらの課題に対する可否は、原則として科目の評価には入りません。

Microsoft Teams の利用について

この科目では、講義中のスライドや画面提示、演習中のTAによる課題チェックや質問の予約に Microsoft Teams を利用します。 実習室環境での Teams は、初回の setup コマンドの実行で作成されたデスクトップアイコンから起動することができます。 Teams は、実習室環境以外でも Google Chrome などのWebブラウザ、あるいは、スマホアプリをインストールすることでどこでも利用が可能です。

一般チャネル: 講義中の教員スライド・画面の共有、および各種お知らせ

講義中は、教員PCの画面や講義用スライドの内容をプロジェクタに表示すると同時に、Teams の「会議」を利用してみなさんに配信します。 毎回、科目チームの一般チャネルに「会議」が立ち上がりますので、Teams から参加して下さい。うまく参加できると、共有されたスライド等の画面がリアルタイムで表示されます。 画面の拡大表示も可能なので、端末(ターミナル)上の操のようなプロジェクタでは内容が確認しにくい場面など、必要に応じてうまく利用して下さい。

また、このチャネルではこの科目に関する内容を含めた各種のお知らせが教員より投稿されます。

出席申告チャネル: 理工出席 sk2 が利用できない場合の出席申告

この科目では、スマホアプリ「理工出席」により毎回の出席記録を行っています。 「理工出席」やスマホの動作不良、スマホを忘れてきた等の理由で「理工出席」アプリでの出席が記録できない場合は、この出席申告チャネルで出席を申告して下さい。 チャネルでの出席申告は、基本的に学籍番号と氏名を投稿するだけですが、申告時間の制限や追加の記入事項があることもあります。科目担当教員の指示に従って下さい。

TA予約用チャネル: 演習中のTA予約用

この科目には、TAによるチェックが指示されている演習課題があります。また、TAによる課題チェック以外にも、TAへの質問が可能です。 TAチェック、あるいは、TAへの対面での質問をしたい場合は、このTA予約用チャネルでTA予約をして下さい。 TA予約チャネルの利用方法は、

  1. TA予約チャネルに、「チェックを希望する課題番号」、あるいは、「質問内容」を投稿する。
  2. 自分の投稿に TA からの返信があったら、その返信元の TA の指示に従って下さい。
  3. 対応を受けた投稿には TAからの「いいね」マークが付き、対応完了したことがマークされます。

となります。原則として、予約受付順に対応を行いますが、課題番号や質問内容によって予約順とTA対応の順が前後することがあります。

また、予約が入っておらずTAの手が空いているときに限り、直接TAの元を訪れて対応を受けることも可能です。 ただし、予約なしのTA対応は、対応途中でもTA予約により中断されることがあります。

質問用チャネル: 教員・TAへのオンラインでの質問

質問用チャネル へは、講義や演習時間中であるかどうかに関わらず、いつでも質問を投げることが可能です。 質問へは、教員、またはTAがオンラインで対応します。

また、ここへ投稿された質問と回答は、この科目関係者全員に共有されます。 したがって、他の受講生にも有益と思われる質問投稿には、教員から「いいね」マークが付き、評価加点の対象となります。

1. ネットワーク環境を調べる

  • 以下のコマンドを使って、自分が利用している計算機のネットワーク環境を調べなさい。
  • コマンドが実行できない場合は、whereis コマンドを使ってコマンドのパスを調べ、フルパスで実行しなさい。

1-1.ifconfig

  1. ifconfig コマンドを使って、自分の計算機のIPアドレスネットワークマスクの値を調べなさい。

1-2.hostname

  1. hostname コマンドを使って、自分の計算機のドメイン名のホスト部を調べなさい。
  2. hostname コマンドを使って、自分の計算機のIPアドレスを調べなさい。

1-3.host

  1. host コマンドを使って、ドメイン名 www.ryukoku.ac.jp の(DNSに登録されている)IPアドレスを調べなさい。
  2. host コマンドを使って、IPアドレス 133.83.80.10 の(DNSに登録されている)ドメイン名を調べなさい。

2.echoServer.py / echoClient.py の実行

2-1. 実行ファイルの準備

  1. ディレクトリ /roes/sample/sano/apro/ より以下の2つのソースファイルを、自分のホームディレクトリ以下の適当な場所にコピーしなさい。
    • echoServer.py
    • echoClient.py
  2. コピーした2つのソースファイルを Visual Studio Code などのエディタで開いて、ファイルの内容を確認しなさい。

2-2. 同じ計算機内で(自分自身と)の通信

  • echoServer の起動
    1. ターミナル(シェル)を起動します。
    2. 起動したターミナル上で、次のように echoServer を起動します。
      (aprog) sano@s01cd0542-161:~$ python echoServer.py
  • echoClient の起動(と通信)
    1. echoServer を実行したものとは別のターミナル(シェル)を新たに起動します。
    2. ターミナルから次のように echoClient を実行します。
      (aprog) sano@s01cd0542-161:~$ python echoClient.py
      Send b'Hello, world'
      Received b'Hello, world'
    3. echoClient を実行し echoServer とうまく通信できると、echoServer を実行したターミナル上にも文字列が表示されます。
ネットワーク上で送受信される文字列などのデータは バイト型 と呼ばれるデータ型として扱われます。 Python での文字列に対応するバイト型のデータは、文字列 'Hello, world' に対して、その先頭に b を付けた b'Hello, world' のように表現することができます。 ネットワーク上で送受信するデータは、基本的にこのバイト型として表現してください。バイト型については、この科目でも次回以降に改めて扱います。

2-3. 他の計算機との通信

  1. echoClient.py の接続先(リモートホスト名)を、IPアドレス 10.10.112.181 に変更しなさい。
  2. 自分の計算機(のターミナル)上で実行された echoClient.py が、指定された計算機の echoServer.py と通信できることを確認しなさい。
  3. 10.10.112.181 で実行されている echoServer.py の実行結果は、プロジェクター・スクリーンに常時表示しておきます。

2-4. 送受信する文字列の変更

2-4-1. クライアントからの送信文字列の変更
  1. echoClient.py を修正し、送信文字列 'Hello, world' の代わりに、自分の学籍番号と氏名を含んだ適当な文字列を送る msgClient.py を作成しなさい。
  2. TAの指定するサーバーに msgClient.py を用いて接続し、変更した文字列データを送信しなさい。
2-4-2. サーバからの返信文字列の変更
  1. クライアントプログラムから受け取った文字列をそのまま送り返すだけであった echoServer.py を修正し、「受け取った文字列」と「自分の学籍番号」を含んだ適当な文字列を返信する replyServer.py を作成しなさい。
  2. echoClient.py と replyServer.py の間で送受信を行い、その動作を確認しなさい。
  3. replyServer.py を起動しなさい。そのサーバプログラム replyServer.py への接続に必要な情報をTAに伝え、TAのクライアントプログラムからの通信に自分の replyServer.py が条件通りに返信できることを確認しなさい。
送受信に用いる文字列はすべてバイト型として、通常の文字列の前に b を付けて宣言して下さい(例:b'Hello World')。バイト型については後半第2回に説明します。

2-5. 繰り返しの送受信

  1. 今回実行した echoServer.py は、echoClient.py との通信を1回行うごとにプログラムの実行を終了している。echoServer.py を修正し、1つの echoClient.py との送受信を完了してもプログラムを終了せず、再び、次の echoClient.py との通信を行うことができるようなサーバプログラム echoServer-ex1.py を作成しなさい。
  2. echoServer-ex1.py を起動し、そのサーバへの接続に必要な適切な情報をTAに伝えなさい。echoServer-ex1.py の一度の起動で、TAのクライアントプログラムからの複数回の接続を継続して繰り返し処理できることを確認しなさい。
  • lecture/apro/2019/ex1.txt
  • 最終更新: 2019/11/19 11:28
  • by sano