Newer
Older
ServerTester / src / main / java / info / istlab / ServerTester / ThreadTimeServer.java
package info.istlab.ServerTester;

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

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

	public ThreadTimeServer() {
		this(11123);
	}
	public ThreadTimeServer(int port) {
		this(port, "127.0.0.1");
	}
	public ThreadTimeServer(int port, String address) {
		super(port, address);
		start();
	}

	public void handleRequest() {
		if (!serverSocket.isBound()) {
			try {
				serverSocket.close();
			} catch (IOException e) {
			}
			return;
		}
		while (serverSocket.isBound()) {
            try {
                Socket socket = serverSocket.accept();
                System.out.println("[TTS] ---\nConnection Requst from: " + (socket.getInetAddress()));
                new RequestHandler4TTS(socket);
            } catch (IOException e) {
                thread = null;
            }
        }
	}
	public static void main(String[] args) {
		invokeMain(args, "ThreadTimeServer");
	}
}

class RequestHandler4TTS implements Runnable {
    Socket sock;
    Thread thread;

	RequestHandler4TTS(Socket s) {
        sock = s;
        thread = new Thread(this);
        thread.start();
    }

	public void run() {
		PrintStream os;
		String outstr; // 出力データを格納する文字列
		Date d; // 日付時刻処理用オブジェクト

		System.out.println("[TTS] accepted (client has connected)");
		System.out.println(sock.getRemoteSocketAddress().toString());
		try {
			os = new PrintStream(sock.getOutputStream());
			// 出力用データの作成
			d = new Date();
			outstr = "\n" + "Hello, this is ThreadTimeServer.\n" + d.toString() + "\n";
			System.out.println("[TTS] (サーバ→クライアント) " + outstr);
			// データの出力(1回目)
			os.println(outstr);
			Thread.sleep(3000); // 3秒まつ
			outstr = new Date().toString();
			os.println(outstr); // データの出力(2回目)
			System.out.println("[TTS] (サーバ→クライアント) " + outstr);
			Thread.sleep(3000); // 3秒まつ
			outstr = "Thank you.";
			os.println(outstr);
			System.out.println("[TTS] (サーバ→クライアント) " + outstr);
			os.close();
			// 接続終了
			sock.close();
			System.out.println("[TTS] クライアントからの接続を閉じました");
		} catch (IOException e) {
			e.printStackTrace();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
}