lecture:apro:2019:ex2

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
最新のリビジョン 両方とも次のリビジョン
lecture:apro:2019:ex2 [2019/11/12 10:03]
sano
lecture:apro:2019:ex2 [2019/11/26 10:45]
sano ↷ lecture:apro:private:ex2 から lecture:apro:2019:ex2 へページを移動しました。
行 1: 行 1:
 ===== 応用プログラミング ex2 演習課題  ===== ===== 応用プログラミング ex2 演習課題  =====
-後半の演習の進め方については、[[..:teams|後半第1回]]の__0.はじめに__をご覧ください。+後半の演習の進め方については、[[..:ex1|後半第1回]]の__0.はじめに__をご覧ください。
  
 ==== 1. sys.argv でコマンドライン引数を使う  ==== ==== 1. sys.argv でコマンドライン引数を使う  ====
行 19: 行 19:
 37 37
 </code> </code>
 +
 === 1-2. echoServer.py === === 1-2. echoServer.py ===
   - echoServer.py を修正し、コマンドライン引数でサーバのポート番号を指定できるように修正しなさい。   - echoServer.py を修正し、コマンドライン引数でサーバのポート番号を指定できるように修正しなさい。
行 25: 行 26:
 実行例:(^C は Control+C での強制終了) 実行例:(^C は Control+C での強制終了)
 <code> <code>
-(aprog) t180900@s01cd0542-161:~/apro$ python echoServer.py+(aprog) t190900@s01cd0542-161:~/apro$ python echoServer.py
 port = 50007 port = 50007
 ^C ^C
-(aprog) t180900@s01cd0542-161:~/apro$ python echoServer.py 1234+(aprog) t190900@s01cd0542-161:~/apro$ python echoServer.py 1234
 port = 1234 port = 1234
 ^C ^C
-(aprog) t180900@s01cd0542-161:~/apro$ python echoServer.py 1234 5678+(aprog) t190900@s01cd0542-161:~/apro$ python echoServer.py 1234 5678
 Usage: echoServer.py [port] Usage: echoServer.py [port]
 </code> </code>
行 43: 行 44:
 <code Python>s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)</code> <code Python>s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)</code>
 </note> </note>
 +
 === 1-3. echoClient-ex.py === === 1-3. echoClient-ex.py ===
-<WRAP alert 100% center> +<WRAP tip 100% center> 
-  - echoClient.py を修正し、コマンドライン引数でサーバのホスト名(IPアドレス)、送信文字列、ポート番号指定できるプログラム <wrap em>echoClient-ex.py</wrap>を作成しなさい。 +  - echoClient.py を修正し、コマンドライン引数でサーバのホスト名(IPアドレス)、送信文字列、ポート番号の順に指定できるプログラム <wrap em>echoClient-ex.py</wrap>を作成しなさい。 
-  - ただし、ポート番号の指定は省略できるものとし、引数与えられない場合はポート番号を 50007 とする。 +  - ただし、最後の引数となるポート番号の指定は省略できるものとし、ポート番号が引数として与えられない場合はポート番号を 50007 とする。 
-  - また、引数が2つ未満でホスト名と送信文字列が与えられない場合、または、4つ以上の引数が与えられた場合はコマンドの利用方法を表示して終了すること。 +  - また、引数が2つ未満でホスト名と送信文字列の両方が与えられない場合、または、4つ以上の引数が与えられた場合はコマンドの利用方法を表示して終了すること。 
-  - <wrap em>echoClient-ex.py を作成するために行ったプログラム修正箇所を説明ながらechoClient-ex.py を実行する様子をTA示しなさい。</wrap>+  - <wrap em>echoClient-ex.py を利用して、TA指定た IPアドレスポート番号もつサーバーへ、TAの指に従った文字列を送信しなさい。</wrap>
  
 実行例:(サーバは送信文字列を2倍して返信) 実行例:(サーバは送信文字列を2倍して返信)
 <code> <code>
-(aprog) t180900@s01cd0542-161:~/apro$ python echoClient-ex.py localhost あいうえお 5007+(aprog) t190900@s01cd0542-161:~/apro$ python echoClient-ex.py localhost あいうえお 5007
 localhost あいうえお 5007 localhost あいうえお 5007
 Send あいうえお Send あいうえお
 Received あいうえおあいうえお Received あいうえおあいうえお
-(aprog) t180900@s01cd0542-161:~/apro$ python echoClient-ex.py 127.0.0.1 hello 5007+(aprog) t190900@s01cd0542-161:~/apro$ python echoClient-ex.py 127.0.0.1 hello 5007
 127.0.0.1 hello 5007 127.0.0.1 hello 5007
 Send hello Send hello
 Received hellohello Received hellohello
-(aprog) t180900@s01cd0542-161:~/apro$ python echoClient-ex.py 127.0.0.1 hello+(aprog) t190900@s01cd0542-161:~/apro$ python echoClient-ex.py 127.0.0.1 hello
 127.0.0.1 hello 50007 127.0.0.1 hello 50007
 Send hello Send hello
 Received hellohello Received hellohello
-(aprog) t180900@s01cd0542-161:~/apro$ python echoClient-ex.py localhost+(aprog) t190900@s01cd0542-161:~/apro$ python echoClient-ex.py localhost
 Usage: echoClient-ex.py <server> <message> [port] Usage: echoClient-ex.py <server> <message> [port]
-(aprog) t180900@s01cd0542-161:~/apro$ python echoClient-ex.py localhost hello 5007 123+(aprog) t190900@s01cd0542-161:~/apro$ python echoClient-ex.py localhost hello 5007 123
 Usage: echoClient-ex.py <server> <message> [port] Usage: echoClient-ex.py <server> <message> [port]
 </code> </code>
行 72: 行 74:
  
 ==== 2. 繰り返しの送受信 ==== ==== 2. 繰り返しの送受信 ====
-<WRAP alert 100% center>+<WRAP tip 100% center>
   - echoServer.py は、クライアントとの通信を1回行うごとにプログラムの実行を終了するため、続けて通信するためには再び echoServer.py を起動し直す必要がある。   - echoServer.py は、クライアントとの通信を1回行うごとにプログラムの実行を終了するため、続けて通信するためには再び echoServer.py を起動し直す必要がある。
-  - echoServer.py を修正し、1つのクライアントとの送受信を完了しても終了せず、再び受信待機(Listen)状態に復帰し引き続き次のクライアントと通信を行うことができるプログラム echoServer-ex.py を作成しなさい。 +  - echoServer.py を修正し、1つのクライアントとの送受信を完了してもプログラムを終了せず、再び受信待機(Listen)状態に復帰し引き続き次のクライアントと通信を行うことができるプログラム echoServer-ex.py を作成しなさい。 
-  - <wrap em>echoServer-ex.py を作成するためにったプログラム修正箇所説明しながら実際繰り返し通信を実行す様子をTAしなさい。</wrap>+  - <wrap em>echoServer-ex.py をし、そサーバのIPアドレスとポート番号TAに伝えTAの指示従い、あいは、質問回答しなさい。</wrap>
  
 実行例:(^C は Control+C での強制終了) 実行例:(^C は Control+C での強制終了)
 <code> <code>
-(aprog) t180900@s01cd0542-161:~/apro$ python echoServer-ex.py 5001+(aprog) t190900@s01cd0542-161:~/apro$ python echoServer-ex.py 5001
 port = 5001 port = 5001
 Connected by ('127.0.0.1', 57680) Connected by ('127.0.0.1', 57680)
行 94: 行 96:
 </WRAP> </WRAP>
 ==== 3. ファイルの内容を送信するサーバ htServer.py ==== ==== 3. ファイルの内容を送信するサーバ htServer.py ====
-<WRAP todo 100% center> +  - htServer.py は、クライアントから 'GET' というコマンド(文字列)を受け取ると、htServer.py と同じディレクトリにあるテキストファイル(例えば、server.txt)の内容を返信し、それ以外のコマンドを受け取ると 'not a command' のようなメッセージを返信する。 
-  - htServer.py は、クライアントから 'GET' というコマンドを受け取ると、htServer.py と同じディレクトリにあるテキストファイル(例えば、server.txt)の内容を返信し、それ以外のコマンドを受け取ると 'not a command' のようなメッセージを返信する。このようなサーバプログラム <wrap em>htServer.py を作成し、TAにプログラムの内容を説明しながら実行の様子しなさい。</wrap>+  - このようなサーバプログラムhtServer.py を作成し、適当なクライアントプログラムで動作確認しなさい。
  
 テキストファイルの例: server.txt テキストファイルの例: server.txt
行 104: 行 106:
 実行例: htServer.py 実行例: htServer.py
 <code> <code>
-(aprog) t180900@s01cd0542-161:~/apro$ python htServer.py 50001+(aprog) t190900@s01cd0542-161:~/apro$ python htServer.py 50001
 port = 50001 port = 50001
 Connected by ('127.0.0.1', 55810) Connected by ('127.0.0.1', 55810)
行 116: 行 118:
 実行例: echoClient-ex.py 実行例: echoClient-ex.py
 <code> <code>
-(aprog) t180900@s01cd0542-161:~/apro$ python echoClient.py localhost GET 50001+(aprog) t190900@s01cd0542-161:~/apro$ python echoClient.py localhost GET 50001
 localhost GET 50001 localhost GET 50001
 Send GET Send GET
 Received これは server.txt ファイルの中身です Received これは server.txt ファイルの中身です
-(aprog) t180900@s01cd0542-161:~/apro$ python echoClient.py localhost get 50001+(aprog) t190900@s01cd0542-161:~/apro$ python echoClient.py localhost get 50001
 localhost get 50001 localhost get 50001
 Send get Send get
 Received get is not a command Received get is not a command
 </code> </code>
-</WRAP> 
  
  • lecture/apro/2019/ex2.txt
  • 最終更新: 2019/11/26 10:46
  • by sano