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(); } } }