解答例 - 実習課題1 - 2.ソケット
(実習課題1)
インターネット上のプロトコルとして、Daytimeプロトコルというものがあります。Daytimeプロトコルにおけるサーバは、ソケットに接続すると、接続してきたクライアントに対して現在の時刻を送り返し、コネクションを切断します。
このDaytimeサーバに接続し、送られてきた時刻情報を表示するクライアントプログラムを作成して下さい。接続先のDaytimeサーバのIPアドレス(またはホスト名)はコマンドラインで指定できるようにして下さい。なお、Daytimeサーバの待ち受けポートは13番で固定とします。
公開されているDaytimeサーバとしては、time.nist.gov があります。実際に接続して、動作を確認して下さい。
解答例
/** * DaytimeClient.java TECHSCORE Javaネットワークプログラミング2章 実習課題 * * Copyright (c) 2004 Four-Dimensional Data, Inc. */ package com.techscore.net.chapter2; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.Socket; public class DaytimeClient { public static final int DAYTIME_PORT = 13; public static void main(String args[]) { Socket socket = null; if (args.length == 0) { System.out.println("引数に接続先のサーバを指定してください"); return; } try { //引数で指定したホストに接続する socket = new Socket(args[0], DAYTIME_PORT); System.out.println("接続しました : " + socket.getRemoteSocketAddress()); //データ受信用のリーダを作成 BufferedReader in = new BufferedReader(new InputStreamReader(socket .getInputStream())); String line; while ((line = in.readLine()) != null) { System.out.println(line); } in.close(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (socket != null) { System.out.println("切断されました : " + socket.getRemoteSocketAddress()); socket.close(); } } catch (IOException e) { } } } }