テキストデータのやりとり


テキストデータをサーバから読むクライアント

localhostの13番ポートで動作しているDaytimeサーバ に接続するクライアントは次のように書くことができます。 接続するとサーバが現在の時刻を表す1行の文字列 (たとえば "54685 08-08-07 01:06:11 50 0 0 546.1 UTC(NIST) *") を返します。








コンピュータネットワーク 演習


提出〆切は、次回の講義が始まる時刻です。


課題2a

提出先 http://ynitta.com/class/network/local/handin/list.php?id=kadai2a
提出ファイルRunDaytimeText2.java
コメント欄

引数として次の指定をした場合のそれぞれの 結果出力をコピーし、さらになぜそのような結果が返ってきたのか 原因を説明しなさい。

$ java RunDaytimeText2 localhost
$ java RunDaytimeText2 nx.tsuda.ac.jp
$ java RunDaytimeText2 nx.tsuda.ac.jp 13
$ java RunDaytimeText2 nx.tsuda.ac.jp 25
$ java RunDaytimeText2 nx.tsuda.ac.jp 8000
$ java RunDaytimeText2 xxx.tsuda.ac.jp 13

万一、120秒以上プログラムが走り続けて何の出力も得られない場合は、 Control-C(Contorolキーを押しながら Cキーをタイプする)で、 そのプログラムを強制終了させ、なぜハングした状態になったのか その原因を説明しなさい。

原因には

  • そのようなホストは存在しないのでホスト名をIPアドレスに変換できない
  • そのようなホストが存在はするが起動していない
  • そのようなホストが存在し起動もしているが13番ポートに返事をするサーバがいない
  • そのようなホストが存在し起動もしているが13番ポートがfirewallで閉じられている
  • そのようなホストが存在し起動もしており13番ポートに返事をするサーバもいる
  • ...
等が考えられることでしょう。

ちなみに nx.tsuda.ac.jp (CentOS 7)のfirewall設定は以下の通りです。
[root@nx]# firewall-cmd --list-all --zone=public  
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eno16777984
  sources: 
  services: dhcpv6-client ssh
  ports: 80/tcp 443/tcp 13/tcp 25/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

さて、RunDaytimeText.javaはlocalhostでDaytimeサーバが 動作していないと試してみることができません。 RunDaytimeText.javaを参考にして、 第1引数ではホスト名を、 第2引数ではポート番号を指定できるように変更した RunDaytimeText2.javaを作成して下さい。

引数の指定方法
コマンドラインの指定接続ホスト名ポート番号
java RunDaytimeText2localhost13
java RunDaytimeText2 文字列文字列13
java RunDaytimeText2 文字列 番号文字列番号
java RunDaytimeText2 文字列 番号 ...文字列番号

(注意) 公開 daytimeサーバである time.nist.gov に接続してみましょう。 学内ネットワーク(公式133.99/16, private address: 192.168/16) から外部への13番ポートはフィルタリングされているので接続できませんが、 皆さんの自宅からならばできる可能性が高いです。 また、今回の演習の時間に、nx.tsuda.ac.jp の13番ポートで時刻を返すサーバを 動作させておきますので、そちらにも接続をして動作を確認して下さい。