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


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

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 のfirewall設定は以下の通りです。
[2026年度まで]  (CentOS 7)
# 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: 

[2027年度以降]  (Ubuntu26.04LTS)
# sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To              Action      From
--              ------      ----
22/tcp          ALLOW IN    Anywhere
80/tcp          ALLOW IN    Anywhere
443/tcp         ALLOW IN    Anywhere

さて、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番ポートで時刻を返すサーバを 動作させておきますので、そちらにも接続をして動作を確認して下さい。