Newer
Older
ServerTester / src / main / java / info / istlab / ServerTester / TimeServer.java
package info.istlab.ServerTester;
// 時刻を答えるサーバプログラムTimeServer.java

import java.io.PrintStream;
import java.net.Socket;
import java.util.Date;

// TimeServerクラス
public class TimeServer extends Server{

	public TimeServer(){
		this(10123);
	}
	public TimeServer(int port) {
		this(port, "127.0.0.1");
	}
	public TimeServer(String bindaddress) {
		this(10123, bindaddress);
	}
	public TimeServer(int port, String bindaddress) {
		super(port, bindaddress);
		start();
	}

	public void handleRequest() {
		Socket clientSocket;// ソケットの読み書き用オブジェクト
		PrintStream os;
		String outstr; // 出力データを格納する文字列
		Date d; // 日付時刻処理用オブジェクト

		// サーバ側の処理の繰り返し
		while (thread != null) {
			try {
				clientSocket = serverSocket.accept(); // 接続がくるまで、ここで待つ
				System.out.println("(TimeServer) accepted (client has connected)");
				System.out.println(clientSocket.getRemoteSocketAddress().toString());
				os = new PrintStream(clientSocket.getOutputStream());

				// 出力用データの作成
				d = new Date();
				outstr = "\n" + "Hello, this is TimeServer.\n" + d.toString() + "\n";
				System.out.println("(サーバ→クライアント) " + outstr);
				// データの出力(1回目)
				os.println(outstr);
				Thread.sleep(3000); // 3秒まつ
				outstr = new Date().toString();
				os.println(outstr); // データの出力(2回目)
				System.out.println("(サーバ→クライアント) " + outstr);
				Thread.sleep(3000); // 3秒まつ
				outstr = "Thank you.";
				os.println(outstr);
				System.out.println("(サーバ→クライアント) " + outstr);
				os.close();
				// 接続終了
				clientSocket.close();
				System.out.println("(TimeServer) クライアントからの接続を閉じました");
			} catch (Exception ex) {
				ex.printStackTrace();
			}
		}
	}

	public static void main(String[] args) {
		invokeMain(args, "TimeServer");
	}
}