diff --git a/bin/j2/EchoServer.class b/bin/j2/EchoServer.class index de737ca..21addfc 100644 --- a/bin/j2/EchoServer.class +++ b/bin/j2/EchoServer.class Binary files differ diff --git a/src/j2/EchoServer.java b/src/j2/EchoServer.java index 4ddfbec..baa763e 100644 --- a/src/j2/EchoServer.java +++ b/src/j2/EchoServer.java @@ -8,6 +8,7 @@ import java.net.Socket; public class EchoServer { + @SuppressWarnings("resource") public static void main(String args[]) { // ソケットや入出力用のストリームの宣言 ServerSocket echoServer = null; diff --git a/src/j2/ThreadEchoClient.java b/src/j2/ThreadEchoClient.java index 90387ae..6c079e5 100644 --- a/src/j2/ThreadEchoClient.java +++ b/src/j2/ThreadEchoClient.java @@ -6,12 +6,39 @@ import java.io.InputStreamReader; import java.net.Socket; import java.net.UnknownHostException; -public class ThreadEchoClient { +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); + } + } + public static void main(String[] args) { // ソケットや入出力用のストリームの宣言 Socket socket = null; DataOutputStream dos = null; - BufferedReader isbr = null; BufferedReader stdinbr = null; // ポート9999番を開く @@ -19,7 +46,6 @@ 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)); } catch (UnknownHostException e) { System.err.println("Don't know about host: "+host); @@ -28,25 +54,22 @@ } // サーバーにメッセージを送る - if (socket != null && dos != null && isbr != null) { + if (socket != null && dos != null ) { + new ThreadEchoClient(socket); try { // メッセージを送ります dos.writeBytes("HELLO\n"); // サーバーからのメッセージを受け取り画面に表示します - String line; - while ((line = isbr.readLine()) != null) { - System.out.println("Server: " + line); - if (line.equals("quit")) break; + while (true) { String s = stdinbr.readLine(); System.out.println(s); dos.writeBytes(s+"\n"); } // 開いたソケットなどをクローズ - dos.close(); - isbr.close(); - socket.close(); +// dos.close(); +// socket.close(); } catch (UnknownHostException e) { System.err.println("Trying to connect to unknown host: " + e); } catch (IOException e) { @@ -54,4 +77,5 @@ } } } + } \ No newline at end of file diff --git a/src/j2/ThreadEchoServer.java b/src/j2/ThreadEchoServer.java index 66467fe..f44ae24 100644 --- a/src/j2/ThreadEchoServer.java +++ b/src/j2/ThreadEchoServer.java @@ -39,6 +39,7 @@ System.out.println("disconnected "+sock.toString()); } } + @SuppressWarnings("resource") public static void main(String args[]) { // ソケットの宣言 ServerSocket echoServer = null;