package j2; // 時刻を答えるサーバプログラムTimeServer.java // このプログラムはポート番号5555番で動作するサーバです // クライアントから接続がきたら、一方的に時刻を返します // このプログラムを停止させるにはコントロールCを入力してください // 使い方: java TimeServer // ライブラリの利用 import java.io.IOException; import java.io.PrintStream; import java.net.InetSocketAddress; import java.net.ServerSocket; import java.net.Socket; import java.util.Date; System.out.println("笹森はイケボ") ; // TimeServerクラス class TimeServer{ public static void main(String args[]){ ServerSocket svsock= null ;// サーバ用ソケット Socket sock ;// ソケットの読み書き用オブジェクト PrintStream os ; String outstr ; // 出力データを格納する文字列 Date d ; // 日付時刻処理用オブジェクト try{ // サーバソケットの作成 svsock = new ServerSocket() ; // バインドするアドレスとポートを指定 svsock.bind(new InetSocketAddress("0.0.0.0" , 5555)) ; //別のホストからの接続も受け付ける場合 // svsock.bind(new InetSocketAddress("127.0.0.1", 5555)) ; //ローカルホストからのみ受け付ける場合 System.out.println("(TimeServer) 停止するには CTRL+C をおしてください") ; // サーバ側の処理の繰り返し while(true){ sock = svsock.accept() ;//接続がくるまで待つ System.out.println("(TimeServer) accepted (client has connected)") ; System.out.println(sock.getRemoteSocketAddress().toString()) ; os = new PrintStream(sock.getOutputStream()) ; // 出力用データの作成 d = new Date() ; outstr = "\n" + "Hello, this is Takuto Sasamori.\n" + d.toString() + "\n" ; System.out.println("(Server-side message) "+ outstr) ; // データの出力(1回目) os.println(outstr) ; Thread.sleep(3000); // 3秒まつ outstr = new Date().toString() ; os.println(outstr) ; // データの出力(2回目) System.out.println("(Server-side message) "+ outstr) ; Thread.sleep(3000) ; // 3秒まつ outstr = "Thank you." ; os.println(outstr); System.out.println("(Server-side message) "+ outstr) ; os.close() ; // 接続終了 sock.close() ; System.out.println("(TimeServer) クライアントからの接続を閉じました") ; } } catch(IOException e){ System.out.println("*** Exception ***") ; System.out.println(e) ; System.exit(1) ; } catch (InterruptedException e) { e.printStackTrace(); } } }