応用プログラミング ex1 演習課題
0.setupコマンドでWebリンクとapro2016ディレクトリの作成
setup コマンドを実行してください。
[sano@s1542f160 ~]$ /roes/sample/sano/apro/setup
実行後、デスクトップ上に演習ページと画面共有実行のためのアイコンが作成され、演習用ディレクトリ ~/apro2016 が作成されます。
1. ネットワーク環境を調べる
- 以下のコマンドを使って、自分が利用している計算機のネットワーク環境を調べなさい。
- コマンドが実行できない場合は、whereis コマンドを使ってコマンドのパスを調べ、フルパスで実行しなさい。
1-1.ifconfig
- ifconfig コマンドを使って、自分の計算機のIPアドレスとネットワークマスクの値を調べなさい。
1-2.hostname
- hostname コマンドを使って、自分の計算機のドメイン名のホスト部を調べなさい。
- hostname コマンドを使って、自分の計算機のIPアドレスを調べなさい。
1-3.host
- host コマンドを使って、自分の計算機のIPアドレスから(DNSに登録されている)ドメイン名を調べなさい。
- host コマンドを使って、133.83.80.11 のIPアドレスをもつ計算機の(DNSに登録されている)ドメイン名を調べなさい。
2.echo Server/Client の作成と実行
2-1. 実行ファイルの作成
- ディレクトリ ~/apro2016/sample より以下の4つのソースファイルを ~/apro2016 にコピーしなさい。
- echoServer.c
- echoClient.c
- dieWithError.c
- handleTCPClient.c
- これらをコンパイル&リンクして echoServer と echoClient という名前の2つの実行ファイルを作成しなさい。
- 実行ファイル echoServer と echoClient を作成するためには、それぞれ複数のソースファイルが必要です。各ソースファイルに書かれている関数とプロトタイプ宣言に注目し、実行ファイル作成に必要な作業を各自で考えてください。
- echoServer 用の main() 関数は echoServer.c に書かれています。
- echoClient 用の main() 関数は echoClient.c に書かれています。
- 作成された実行ファイルがうまく作成されれば、実行結果は次のようになります。
[sano@s1542f160 ~]$ ./echoClient Usage: ./echoClient <Server IP> <Echo String> [<Echo Port>] [sano@s1542f160 ~]$ ./echoServer Usage: ./echoServer <Server Port> [sano@s1542f160 ~]$
2-2. 同じ計算機内で(自分自身と)の通信 <color white,red/white>[TA]</color>
- echoServer の起動
- ターミナル(シェル)を起動します。
- ターミナル上で、次のように echoServer を起動します。
[sano@s1542f160 ~]$ ./echoServer 5007
- echoClient からの通信
- echoServer を実行したものとは別のターミナル(シェル)を新たに起動します。
- host コマンドや hostname コマンドなどで自分の計算機のIPアドレスを調べなさい。
- 調べたIPアドレスを使って、ターミナルから次のように echoClient を実行します。
[sano@s1542f160 ~]$ ./echoClient 自分のIPアドレス HelloEchoServer 5007 Handling client <自分のIPアドレス> Received: HelloEchoServer
- echoServer とうまく通信できたら、上記のように入力文字列がそのまま返ってきます。
%TAの前で上記を実演しながら通信の様子をTAに説明してしてください。%
- 以上ができたら、異なる2つの計算機(たとえば自分のPCと友人のPC)でそれぞれ echoServer と echoClient を動かし、異なる計算機間でもネットワーク通信ができることを確認してみよう。
2-3. 外部サーバとの通信 <color white,red/white>[TA]</color>
- host コマンドを使って、raphael.math.ryukoku.ac.jp というドメイン名をもつ計算機のIPアドレスを調べなさい。
- 調べたIPアドレスを使って、echoClient から raphael.math.ryukoku.ac.jp で実行されている echoServer と通信しなさい。echoClient の最後の引数に与える数値として、7 と 5007 の2つの数値を使ってそれぞれ通信しなさい。
- 同じ実行ファイル echoClient を使い、同じ計算機 raphael.math.ryukoku.ac.jp と通信したにもかかわらず、最後の3番目の引数の値(7、および 5007)によって異なるメッセージが返ってくることを確認しなさい。
%通信するサーバ計算機 raphael.math.ryukoku.ac.jp が同じであるにも係わらず、この3番目の引数の数値によって異なるメッセージが返ってくる理由をTAに説明しなさい。%