diff --git a/src/j1/Hello.java b/src/j1/Hello.java index 5a651dd..7b1880b 100644 --- a/src/j1/Hello.java +++ b/src/j1/Hello.java @@ -1,8 +1,8 @@ package j1; // Hello.java -public class Hello{ - public static void main(String[] args){ - System.out.println("Hello!"); +public class Hello { + public static void main(String[] args) { + System.out.println("Hello!"); } } diff --git a/src/j1/HelloNW.java b/src/j1/HelloNW.java index 76f42aa..9d5f071 100644 --- a/src/j1/HelloNW.java +++ b/src/j1/HelloNW.java @@ -1,11 +1,11 @@ package j1; // HelloNW.java -public class HelloNW{ - public static void main(String[] args){ - System.out.println("Hello!"); - System.out.print("Welcome to ") ; - System.out.print("nerwork programming ") ; - System.out.println("in Java!"); - } +public class HelloNW { + public static void main(String[] args) { + System.out.println("Hello!"); + System.out.print("Welcome to "); + System.out.print("nerwork programming "); + System.out.println("in Java!"); + } } diff --git a/src/j1/PrintArgs.java b/src/j1/PrintArgs.java index e3d061e..edc9f4b 100644 --- a/src/j1/PrintArgs.java +++ b/src/j1/PrintArgs.java @@ -7,9 +7,9 @@ // <配列変数名>.length は,配列の要素の数を表す. // なお,< と >で囲まれた日本語はJavaの構文の要素を示す. -public class PrintArgs{ - public static void main(String[] args){ - for(int i = 0; i< args.length; i += 1) - System.out.println("args["+ i+ "] = "+ args[i]); +public class PrintArgs { + public static void main(String[] args) { + for (int i = 0; i < args.length; i += 1) + System.out.println("args[" + i + "] = " + args[i]); } } diff --git a/src/j1/ReadFile.java b/src/j1/ReadFile.java index 314d6f4..be01682 100644 --- a/src/j1/ReadFile.java +++ b/src/j1/ReadFile.java @@ -8,35 +8,32 @@ import java.io.IOException; public class ReadFile { - public static void main(String[] args){ - byte[] buff = new byte[1024]; - FileInputStream infile = null; - - try{ - infile = new FileInputStream(args[0]) ; - } - catch(FileNotFoundException e){ // ファイル準備の失敗 - - System.err.println("Error: File not found.") ; - System.exit(1) ; - } + public static void main(String[] args) { + byte[] buff = new byte[1024]; + FileInputStream infile = null; - while (true) { - try { - int n = infile.read(buff); - System.out.write(buff, 0, n) ; - } - catch(Exception e){ // 読み出し終了 - break; // 繰り返しを終了 - } - } + try { + infile = new FileInputStream(args[0]); + } catch (FileNotFoundException e) { // ファイル準備の失敗 - try{ - infile.close() ; + System.err.println("Error: File not found."); + System.exit(1); + } + + while (true) { + try { + int n = infile.read(buff); + System.out.write(buff, 0, n); + } catch (Exception e) { // 読み出し終了 + break; // 繰り返しを終了 + } + } + + try { + infile.close(); + } catch (IOException e) { + System.err.println("Error(close)."); + System.exit(1); + } } - catch(IOException e){ - System.err.println("Error(close).") ; - System.exit(1) ; - } - } } diff --git a/src/j1/ReadFile2.java b/src/j1/ReadFile2.java index 4ac2236..d3700cd 100644 --- a/src/j1/ReadFile2.java +++ b/src/j1/ReadFile2.java @@ -8,35 +8,32 @@ // 使い方: java Readfile2 <ファイル名> public class ReadFile2 { - public static void main(String[] args){ - byte[] buff = new byte[1024]; - FileInputStream infile = null; - - try{ - infile = new java.io.FileInputStream(args[0]) ; - } - catch(java.io.FileNotFoundException e){ // ファイル準備の失敗 - - System.err.println("Error: File not found.") ; - System.exit(1) ; - } + public static void main(String[] args) { + byte[] buff = new byte[1024]; + FileInputStream infile = null; - while (true) { - try { - int n = infile.read(buff); - System.out.write(buff, 0, n) ; - } - catch(IOException e){ // 読み出し終了 - break; // 繰り返しを終了 - } - } + try { + infile = new java.io.FileInputStream(args[0]); + } catch (java.io.FileNotFoundException e) { // ファイル準備の失敗 - try{ - infile.close() ; + System.err.println("Error: File not found."); + System.exit(1); + } + + while (true) { + try { + int n = infile.read(buff); + System.out.write(buff, 0, n); + } catch (IOException e) { // 読み出し終了 + break; // 繰り返しを終了 + } + } + + try { + infile.close(); + } catch (java.io.IOException e) { + System.err.println("Error(close)."); + System.exit(1); + } } - catch(java.io.IOException e){ - System.err.println("Error(close).") ; - System.exit(1) ; - } - } } diff --git a/src/j1/ReadWrite.java b/src/j1/ReadWrite.java index eb14f5a..155fd45 100644 --- a/src/j1/ReadWrite.java +++ b/src/j1/ReadWrite.java @@ -1,18 +1,18 @@ package j1; public class ReadWrite { - public static void main(String[] args){ - byte[] buff = new byte[1024]; - while (true) { - try { - int n = System.in.read(buff); - System.out.write(buff, 0, n); - System.out.println("文字数は "+n); - if (n==1) break; // Enter(改行)だけだと終了 - } - catch(Exception e){ - System.exit(1); - } + public static void main(String[] args) { + byte[] buff = new byte[1024]; + while (true) { + try { + int n = System.in.read(buff); + System.out.write(buff, 0, n); + System.out.println("文字数は " + n); + if (n == 1) + break; // Enter(改行)だけだと終了 + } catch (Exception e) { + System.exit(1); + } + } } - } } diff --git a/src/j1/TestThread.java b/src/j1/TestThread.java index 840a328..a4d0f42 100644 --- a/src/j1/TestThread.java +++ b/src/j1/TestThread.java @@ -1,34 +1,36 @@ package j1; //----------------------------------------------------------- -public class TestThread{ - public static void main(String[] args){ - System.out.print("TestThread started."); +public class TestThread { + public static void main(String[] args) { + System.out.print("TestThread started."); - MyThread mt1 = new MyThread("1 ", 1300); - MyThread mt2 = new MyThread("2 ", 2900); - - mt1.start(); - mt2.start(); - } + MyThread mt1 = new MyThread("1 ", 1300); + MyThread mt2 = new MyThread("2 ", 2900); + + mt1.start(); + mt2.start(); + } }; -//----------------------------------------------------------- -class MyThread extends Thread { - String str; - int msec; - MyThread(String txt, int ms) { - this.str = txt; - this.msec = ms; - } - public void run() { - while(true) { - try { - System.out.print(this.str); - sleep(msec); // tミリ秒動作休止 - } catch(InterruptedException e) { - break; - } - } // end while - } // end of run +// ----------------------------------------------------------- +class MyThread extends Thread { + String str; + int msec; + + MyThread(String txt, int ms) { + this.str = txt; + this.msec = ms; + } + + public void run() { + while (true) { + try { + System.out.print(this.str); + sleep(msec); // tミリ秒動作休止 + } catch (InterruptedException e) { + break; + } + } // end while + } // end of run } // end of class myThread diff --git a/src/j1/WriteFile.java b/src/j1/WriteFile.java index a8a143b..39ea309 100644 --- a/src/j1/WriteFile.java +++ b/src/j1/WriteFile.java @@ -8,36 +8,36 @@ // プログラムを終了するには,行の先頭にピリオド.を入力する. import java.io.*; + public class WriteFile { - public static void main(String[] args){ - byte[] buff = new byte[1024]; - boolean cont = true ; - FileOutputStream outfile = null; // ファイル出力用オブジェクト - try{ - outfile = new FileOutputStream(args[0]) ; + public static void main(String[] args) { + byte[] buff = new byte[1024]; + boolean cont = true; + FileOutputStream outfile = null; // ファイル出力用オブジェクト + try { + outfile = new FileOutputStream(args[0]); + } catch (FileNotFoundException e) { // ファイル準備の失敗 + System.err.println("File not found"); + System.exit(1); + } + // 行頭でピリオドが入力されるまで繰り返す. + while (cont) { + try { + int n = System.in.read(buff); + System.out.write(buff, 0, n); + if (buff[0] == '.') + cont = false; + else + outfile.write(buff, 0, n); + } catch (Exception e) { + System.exit(1); // プログラムの終了 + } + } + try { + outfile.close(); + } catch (IOException e) { + System.err.println("Error in closing a file"); + System.exit(1); + } } - catch(FileNotFoundException e){ // ファイル準備の失敗 - System.err.println("File not found") ; - System.exit(1) ; - } - // 行頭でピリオドが入力されるまで繰り返す. - while (cont) { - try { - int n = System.in.read(buff); - System.out.write(buff, 0, n) ; - if(buff[0] == '.') cont = false ; - else outfile.write(buff,0,n) ; - } - catch(Exception e){ - System.exit(1); // プログラムの終了 - } - } - try{ - outfile.close() ; - } - catch(IOException e){ - System.err.println("Error in closing a file") ; - System.exit(1) ; - } - } } diff --git a/src/j2/EchoClient.java b/src/j2/EchoClient.java index d30d237..9352dfb 100644 --- a/src/j2/EchoClient.java +++ b/src/j2/EchoClient.java @@ -6,26 +6,27 @@ import java.io.InputStreamReader; import java.net.Socket; import java.net.UnknownHostException; + public class EchoClient { public static void main(String[] args) { // ソケットや入出力用のストリームの宣言 Socket socket = null; DataOutputStream dos = null; BufferedReader isbr = null; - BufferedReader stdinbr = null; - + BufferedReader stdinbr = null; + // ポート9999番を開く - String host = "localhost"; - // String host = "10.104.89.61"; + String host = "localhost"; + // String host = "10.104.89.61"; try { socket = new Socket(host, 9999); dos = new DataOutputStream(socket.getOutputStream()); isbr = new BufferedReader(new InputStreamReader(socket.getInputStream())); - stdinbr = new BufferedReader(new InputStreamReader(System.in)); + stdinbr = new BufferedReader(new InputStreamReader(System.in)); } catch (UnknownHostException e) { - System.err.println("Don't know about host: "+host); + System.err.println("Don't know about host: " + host); } catch (IOException e) { - System.err.println("Couldn't get I/O for the connection to: "+host); + System.err.println("Couldn't get I/O for the connection to: " + host); } // サーバーにメッセージを送る @@ -38,11 +39,12 @@ String line; while ((line = isbr.readLine()) != null) { System.out.println("Server: " + line); - if (line.equals("quit")) break; - + if (line.equals("quit")) + break; + String s = stdinbr.readLine(); - System.out.println(s); - dos.writeBytes(s+"\n"); + System.out.println(s); + dos.writeBytes(s + "\n"); } // 開いたソケットなどをクローズ diff --git a/src/j2/EchoServer.java b/src/j2/EchoServer.java index 7658143..ad19db9 100644 --- a/src/j2/EchoServer.java +++ b/src/j2/EchoServer.java @@ -8,40 +8,39 @@ import java.net.Socket; public class EchoServer { - @SuppressWarnings("resource") - public static void main(String args[]) { - // ソケットや入出力用のストリームの宣言 - ServerSocket echoServer = null; - String line; - BufferedReader br; - PrintStream os; - Socket clientSocket = null; + @SuppressWarnings("resource") + public static void main(String args[]) { + // ソケットや入出力用のストリームの宣言 + ServerSocket echoServer = null; + String line; + BufferedReader br; + PrintStream os; + Socket clientSocket = null; - // ポート9999番を開く - try { - echoServer = new ServerSocket(9999); - } catch (IOException e) { - System.out.println(e); - } - - while(true) { - try { - // クライアントからの要求を受けるソケットを開く - clientSocket = echoServer.accept(); - System.out.println("accept"); - br = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); - os = new PrintStream(clientSocket.getOutputStream()); - // クライアントからのメッセージを待ち、受け取ったメッセージをそのまま返す - while ((line = br.readLine()) != null) { - System.out.println("(Server received) " +line); - os.println(line); + // ポート9999番を開く + try { + echoServer = new ServerSocket(9999); + } catch (IOException e) { + System.out.println(e); } - } - catch (IOException e) { - System.out.println(e); - } finally { - System.out.println("disconnected "+clientSocket.toString()); - } + + while (true) { + try { + // クライアントからの要求を受けるソケットを開く + clientSocket = echoServer.accept(); + System.out.println("accept"); + br = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); + os = new PrintStream(clientSocket.getOutputStream()); + // クライアントからのメッセージを待ち、受け取ったメッセージをそのまま返す + while ((line = br.readLine()) != null) { + System.out.println("(Server received) " + line); + os.println(line); + } + } catch (IOException e) { + System.out.println(e); + } finally { + System.out.println("disconnected " + clientSocket.toString()); + } + } } - } } diff --git a/src/j2/ThreadEchoClient.java b/src/j2/ThreadEchoClient.java index 5172922..e398b66 100644 --- a/src/j2/ThreadEchoClient.java +++ b/src/j2/ThreadEchoClient.java @@ -6,72 +6,75 @@ import java.io.InputStreamReader; import java.net.Socket; import java.net.UnknownHostException; + public class ThreadEchoClient implements Runnable { - BufferedReader isbr = null; - Thread thread = null; - public ThreadEchoClient(Socket socket) { - try { - isbr = new BufferedReader(new InputStreamReader(socket.getInputStream())); - } catch (IOException e) { - e.printStackTrace(); - } - thread = new Thread(this); - thread.start(); - } - - @Override - public void run() { - // サーバーからのメッセージを受け取り画面に表示します - String line; - try { - while ((line = isbr.readLine()) != null) { - System.out.println("Server: " + line); - if (line.equals("quit")) break; - } - } catch (IOException e) { - e.printStackTrace(); - } finally { - System.exit(0); - } - } + BufferedReader isbr = null; + Thread thread = null; - public static void main(String[] args) { - // ソケットや入出力用のストリームの宣言 - Socket socket = null; - DataOutputStream dos = null; - BufferedReader stdinbr = null; - - // ポート9999番を開く - String host = "localhost"; - try { - socket = new Socket(host, 9999); - dos = new DataOutputStream(socket.getOutputStream()); - stdinbr = new BufferedReader(new InputStreamReader(System.in)); - } catch (UnknownHostException e) { - System.err.println("Don't know about host: "+host); - } catch (IOException e) { - System.err.println("Couldn't get I/O for the connection to: "+host); + public ThreadEchoClient(Socket socket) { + try { + isbr = new BufferedReader(new InputStreamReader(socket.getInputStream())); + } catch (IOException e) { + e.printStackTrace(); + } + thread = new Thread(this); + thread.start(); } - // サーバーにメッセージを送る - if (socket != null && dos != null ) { - new ThreadEchoClient(socket); - try { - // メッセージを送ります - dos.writeBytes("HELLO\n"); - dos.writeBytes("type quit to disconnect\n"); + @Override + public void run() { + // サーバーからのメッセージを受け取り画面に表示します + String line; + try { + while ((line = isbr.readLine()) != null) { + System.out.println("Server: " + line); + if (line.equals("quit")) + break; + } + } catch (IOException e) { + e.printStackTrace(); + } finally { + System.exit(0); + } + } - // 標準入力(キーボード)からのメッセージを送信します - while (true) { - String s = stdinbr.readLine(); - dos.writeBytes(s+"\n"); + public static void main(String[] args) { + // ソケットや入出力用のストリームの宣言 + Socket socket = null; + DataOutputStream dos = null; + BufferedReader stdinbr = null; + + // ポート9999番を開く + String host = "localhost"; + try { + socket = new Socket(host, 9999); + dos = new DataOutputStream(socket.getOutputStream()); + stdinbr = new BufferedReader(new InputStreamReader(System.in)); + } catch (UnknownHostException e) { + System.err.println("Don't know about host: " + host); + } catch (IOException e) { + System.err.println("Couldn't get I/O for the connection to: " + host); } - } catch (UnknownHostException e) { - System.err.println("Trying to connect to unknown host: " + e); - } catch (IOException e) { - System.err.println("IOException: " + e); - } + // サーバーにメッセージを送る + if (socket != null && dos != null) { + new ThreadEchoClient(socket); + try { + // メッセージを送ります + dos.writeBytes("HELLO\n"); + dos.writeBytes("type quit to disconnect\n"); + + // 標準入力(キーボード)からのメッセージを送信します + while (true) { + String s = stdinbr.readLine(); + dos.writeBytes(s + "\n"); + } + + } catch (UnknownHostException e) { + System.err.println("Trying to connect to unknown host: " + e); + } catch (IOException e) { + System.err.println("IOException: " + e); + } + } } - } } diff --git a/src/j2/ThreadEchoServer.java b/src/j2/ThreadEchoServer.java index 51f1d5f..2511318 100644 --- a/src/j2/ThreadEchoServer.java +++ b/src/j2/ThreadEchoServer.java @@ -8,58 +8,60 @@ import java.net.Socket; public class ThreadEchoServer implements Runnable { - Socket sock; - Thread thread; - ThreadEchoServer(Socket sc){ - sock = sc; - //start running - thread = new Thread(this); - thread.start(); // スレッドが run()を背負って走る - } + Socket sock; + Thread thread; - @Override - public void run() { - String line = null; - BufferedReader br = null; - PrintStream os = null; - - System.out.println("accept"); - try { - br = new BufferedReader(new InputStreamReader(sock.getInputStream())); - os = new PrintStream(sock.getOutputStream()); - // クライアントからのメッセージを待ち、受け取ったメッセージをそのまま返す - while ((line = br.readLine()) != null) { - System.out.println("(Server received) " +line); - os.println(line); - } - } catch (IOException e) { - // os.close(); - System.out.println(e); - } finally { - System.out.println("disconnected "+sock.toString()); - } - } - @SuppressWarnings("resource") - public static void main(String args[]) { - // ソケットの宣言 - ServerSocket echoServer = null; - Socket clientSocket = null; - - // ポート9999番を開く - try { - echoServer = new ServerSocket(9999); - } catch (IOException e) { - System.out.println(e); + ThreadEchoServer(Socket sc) { + sock = sc; + // start running + thread = new Thread(this); + thread.start(); // スレッドが run()を背負って走る } - while(true) { - // クライアントからの要求を受けるソケットを開く - try { - clientSocket = echoServer.accept(); - } catch (IOException e) { - e.printStackTrace(); - } - new ThreadEchoServer(clientSocket); + @Override + public void run() { + String line = null; + BufferedReader br = null; + PrintStream os = null; + + System.out.println("accept"); + try { + br = new BufferedReader(new InputStreamReader(sock.getInputStream())); + os = new PrintStream(sock.getOutputStream()); + // クライアントからのメッセージを待ち、受け取ったメッセージをそのまま返す + while ((line = br.readLine()) != null) { + System.out.println("(Server received) " + line); + os.println(line); + } + } catch (IOException e) { + // os.close(); + System.out.println(e); + } finally { + System.out.println("disconnected " + sock.toString()); + } } - } + + @SuppressWarnings("resource") + public static void main(String args[]) { + // ソケットの宣言 + ServerSocket echoServer = null; + Socket clientSocket = null; + + // ポート9999番を開く + try { + echoServer = new ServerSocket(9999); + } catch (IOException e) { + System.out.println(e); + } + + while (true) { + // クライアントからの要求を受けるソケットを開く + try { + clientSocket = echoServer.accept(); + } catch (IOException e) { + e.printStackTrace(); + } + new ThreadEchoServer(clientSocket); + } + } } diff --git a/src/j2/ThreadTimeServer.java b/src/j2/ThreadTimeServer.java index 9951e4a..d9a5b4a 100644 --- a/src/j2/ThreadTimeServer.java +++ b/src/j2/ThreadTimeServer.java @@ -1,5 +1,6 @@ package j2; // 時刻を答えるサーバプログラムTimeServer.java + // このプログラムはポート番号5555番で動作するサーバです // クライアントから接続がきたら、一方的に時刻を返します // このプログラムを停止させるにはコントロールCを入力してください @@ -15,76 +16,77 @@ // TimeServerクラス class ThreadTimeServer implements Runnable { - Socket sock; - Thread thread; - ThreadTimeServer(Socket sc){ - sock = sc; - } - public void startRunning() { - thread = new Thread(this); - thread.start(); - } - @Override - public void run() { - PrintStream os ; - String outstr ; // 出力データを格納する文字列 - Date d ; // 日付時刻処理用オブジェクト + Socket sock; + Thread thread; - System.out.println("(TimeServer) accepted (client has connected)") ; - System.out.println(sock.getRemoteSocketAddress().toString()) ; - try { - os = new PrintStream(sock.getOutputStream()) ; - // 出力用データの作成 - d = new Date() ; - outstr = "\n" - + "Hello, this is TimeServer.\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) { - e.printStackTrace(); - } catch (InterruptedException e) { - e.printStackTrace(); + ThreadTimeServer(Socket sc) { + sock = sc; } - } - public static void main(String args[]){ - ServerSocket svsock= null ;// サーバ用ソケット - Socket sock ;// ソケットの読み書き用オブジェクト - 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() ;//接続がくるまで待つ - ThreadTimeServer tts = new ThreadTimeServer(sock); - tts.startRunning(); //ThreadTimeServerオブジェクトに残りの処理を任せる - - // これで、次の接続に対応できる - } - } catch(IOException e){ - System.out.println("*** Exception ***") ; - System.out.println(e) ; - System.exit(1) ; + public void startRunning() { + thread = new Thread(this); + thread.start(); } - } + + @Override + public void run() { + PrintStream os; + String outstr; // 出力データを格納する文字列 + Date d; // 日付時刻処理用オブジェクト + + System.out.println("(TimeServer) accepted (client has connected)"); + System.out.println(sock.getRemoteSocketAddress().toString()); + try { + os = new PrintStream(sock.getOutputStream()); + // 出力用データの作成 + d = new Date(); + outstr = "\n" + "Hello, this is TimeServer.\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) { + e.printStackTrace(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + public static void main(String args[]) { + ServerSocket svsock = null;// サーバ用ソケット + Socket sock;// ソケットの読み書き用オブジェクト + 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();// 接続がくるまで待つ + ThreadTimeServer tts = new ThreadTimeServer(sock); + tts.startRunning(); // ThreadTimeServerオブジェクトに残りの処理を任せる + + // これで、次の接続に対応できる + } + } catch (IOException e) { + System.out.println("*** Exception ***"); + System.out.println(e); + System.exit(1); + } + } } diff --git a/src/j2/TimeClient.java b/src/j2/TimeClient.java index 21c9217..6e8a26b 100644 --- a/src/j2/TimeClient.java +++ b/src/j2/TimeClient.java @@ -13,41 +13,40 @@ // TimeClientクラス public class TimeClient { - // プログラムの本体main - public static void main(String[] args){ - Socket csock = null ;// サーバ接続用ソケット - BufferedReader reader = null; - // 指定のポートに対して,ソケットを作成します - // オブジェクトinstrを作り,データ読み出しを準備します - try{ - // readsocket = new Socket(args[0], Integer.parseInt(args[1])) ; - csock = new Socket("127.0.0.1", 5555) ; //ローカルホストのサーバに接続するとき - //csock = new Socket("10.104.89.61", 5555) ;//別ホストのサーバに接続する例(サーバのIPアドレスはip aで調査しておく) - //csock = new Socket(arg[0], 5555) ; //サーバのIPアドレスをコマンドライン引数で指定する例 - reader = new BufferedReader(new InputStreamReader(csock.getInputStream())); - } - catch(Exception e){ - System.err.println("ネットワークエラーです") ; - System.exit(1) ; //異常終了なら1 - } + // プログラムの本体main + public static void main(String[] args) { + Socket csock = null;// サーバ接続用ソケット + BufferedReader reader = null; + // 指定のポートに対して,ソケットを作成します + // オブジェクトinstrを作り,データ読み出しを準備します + try { + // readsocket = new Socket(args[0], Integer.parseInt(args[1])) ; + csock = new Socket("127.0.0.1", 5555); // ローカルホストのサーバに接続するとき + // csock = new Socket("10.104.89.61", 5555) ;//別ホストのサーバに接続する例(サーバのIPアドレスはip + // aで調査しておく) + // csock = new Socket(arg[0], 5555) ; //サーバのIPアドレスをコマンドライン引数で指定する例 + reader = new BufferedReader(new InputStreamReader(csock.getInputStream())); + } catch (Exception e) { + System.err.println("ネットワークエラーです"); + System.exit(1); // 異常終了なら1 + } - // データの終了まで,以下のループを繰り返します - String line = null; - try { - while ((line = reader.readLine()) != null) { - System.out.println("[Reply] " + line); - } - } catch (IOException e1) { - e1.printStackTrace(); + // データの終了まで,以下のループを繰り返します + String line = null; + try { + while ((line = reader.readLine()) != null) { + System.out.println("[Reply] " + line); + } + } catch (IOException e1) { + e1.printStackTrace(); + } + // コネクションを閉じます + try { + reader.close(); + } catch (Exception e) { + // ネットワーククローズ失敗です + System.err.println("ネットワークのエラーです"); + System.exit(1); + } } - // コネクションを閉じます - try{ - reader.close() ; - } - catch(Exception e){ - // ネットワーククローズ失敗です - System.err.println("ネットワークのエラーです") ; - System.exit(1) ; - } - } } diff --git a/src/j2/TimeServer.java b/src/j2/TimeServer.java index 837c906..b4d373f 100644 --- a/src/j2/TimeServer.java +++ b/src/j2/TimeServer.java @@ -1,5 +1,6 @@ package j2; // 時刻を答えるサーバプログラムTimeServer.java + // このプログラムはポート番号5555番で動作するサーバです // クライアントから接続がきたら、一方的に時刻を返します // このプログラムを停止させるにはコントロールCを入力してください @@ -14,56 +15,54 @@ import java.util.Date; // TimeServerクラス -class TimeServer{ - public static void main(String args[]){ - ServerSocket svsock= null ;// サーバ用ソケット - Socket sock ;// ソケットの読み書き用オブジェクト - PrintStream os ; - String outstr ; // 出力データを格納する文字列 - Date d ; // 日付時刻処理用オブジェクト +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 TimeServer.\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(); + 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 TimeServer.\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(); + } } - } } diff --git a/src/j3/Phttpd.java b/src/j3/Phttpd.java index 73f28de..4cfa9e5 100644 --- a/src/j3/Phttpd.java +++ b/src/j3/Phttpd.java @@ -30,10 +30,10 @@ // その他 boolean cont = true; - if (args.length==0) //引数がない場合、以下のファイルを返すことにする - args = new String[] { "src/j3/index.html" }; //相対パスで指定。windowsの場合、user.dir=NWP -// args = new String[] { "j3/index.html" };//Linuxの場合、通常はcd NWP/src しているはず - System.out.println("このサーバは"+args[0]+"を返します。"); + if (args.length == 0) // 引数がない場合、以下のファイルを返すことにする + args = new String[] { "src/j3/index.html" }; // 相対パスで指定。windowsの場合、user.dir=NWP + // args = new String[] { "j3/index.html" };//Linuxの場合、通常はcd NWP/src しているはず + System.out.println("このサーバは" + args[0] + "を返します。"); System.out.println(System.getProperty("user.dir")); try { // サーバ用ソケットの作成(ポート番号8000番)